如何将JPEG图像旋转45°;并将其保存回Haskell中的磁盘?

如何将JPEG图像旋转45°;并将其保存回Haskell中的磁盘?,haskell,image-manipulation,Haskell,Image Manipulation,如何将JPEG图像旋转45°并保存回磁盘?据我所知,Haskell还没有好的图像处理库 更好的方法 您可以使用hsmagick(绑定到libmagick)来操作图像 有关示例,请参见 捷径 但是,如果您想从Haskell执行此操作,则可以使用此方法(假设ImageMagick可用): 艰难的道路 或者,你可以选择艰难的道路,并实现自己。要在Haskell中读取和写入几乎所有的图像格式,可以使用库。如果您这样做了,您最好将此代码放到Hackage上。GD库允许您这样做,但Haskell绑定()目前

如何将JPEG图像旋转45°并保存回磁盘?

据我所知,Haskell还没有好的图像处理库

更好的方法 您可以使用
hsmagick
(绑定到libmagick)来操作图像

有关示例,请参见

捷径 但是,如果您想从Haskell执行此操作,则可以使用此方法(假设ImageMagick可用):

艰难的道路
或者,你可以选择艰难的道路,并实现自己。要在Haskell中读取和写入几乎所有的图像格式,可以使用库。如果您这样做了,您最好将此代码放到Hackage上。

GD库允许您这样做,但Haskell绑定()目前不包含适当的函数。用户还可以向维护人员发出功能请求,或者简单地对其进行修补并将其发送到上游。Graphics.GD.Internal模块(未导出)实际上已经对相应的函数()进行了注释绑定,因此我认为完成这项工作应该非常简单(我相信,这项工作将得到赞赏)。

看看黑客攻击。我知道Tim开始研究libmagick,这还不足以阻止我在需要图像处理时为GIMP生成脚本fu,但如果你只是做一些简单的事情,比如旋转,这就足够了:

liftM (rotateImage 45) (readImage file) >>= writeImage file2
我看到Cale还有一个更完整的功能:

loadImageImmediately file >>= contextSetImage >>
createRotatedImage 45 >>= contextSetImage >> saveImage file2

正如我所说,环顾四周,让我们知道

奇怪。saveImage的ImLib绑定似乎错误/未填写:-(sclv:这是我一开始的想法,但看到编辑-ImLib是有状态的(该死的IO)啊哈。contextsetimage!oy vey。出于好奇,将图像旋转45%意味着什么?是40.5°还是162°(360°是100%)?对不起,我的意思是写45度。我不知道为什么我总是在我指°时键入%。
liftM (rotateImage 45) (readImage file) >>= writeImage file2
loadImageImmediately file >>= contextSetImage >>
createRotatedImage 45 >>= contextSetImage >> saveImage file2