据我所知,Haskell还没有好的图像处理库.
您可以使用hsmagick(绑定到libmagick)来操作图像.
有关示例,请参阅TomMD的答案.
但是如果你想从Haskell做到这一点,这可以解决问题(假设ImageMagick可用):
import System.Cmd (system)
import System.Environment (getArgs)
main = do
(original:rotated:_) <- getArgs
system $ "convert -rotate \"-45\" \"" ++ original ++ "\" \"" ++ rotated ++ "\""
Run Code Online (Sandbox Code Playgroud)
用法:
runghc rotate.hs original.jpg rotated45.jpg
Run Code Online (Sandbox Code Playgroud)
或者您可以选择艰难的方式,并自己实施旋转算法.要在Haskell中读写几乎所有图像格式,可以使用Codec.Image.DevIL库.如果你这样做,那么你可以将这些代码放在Hackage上.
GD库允许您这样做,但Haskell绑定(http://hackage.haskell.org/package/gd)目前不包含适当的功能.还可以向维护者发出功能请求,或者只是修补它并将其发送到上游.实际上,Graphics.GD.Internal模块(未导出)已经对相应的函数进行了注释掉的绑定(http://hackage.haskell.org/packages/archive/gd/3000.5.0/doc/html/src/ Graphics-GD-Internal.html),所以它应该非常简单,我想,完成这项工作(我相信,工作将受到赞赏).
浏览Hackage.我知道Tim开始研究与libmagick的绑定,这还不足以阻止我在需要图像处理时为GIMP生成脚本fu,但如果你只是做旋转之类的简单事情就足够了:
liftM (rotateImage 45) (readImage file) >>= writeImage file2
Run Code Online (Sandbox Code Playgroud)
我看到Cale还有一个ImLib,看起来功能更完整:
loadImageImmediately file >>= contextSetImage >>
createRotatedImage 45 >>= contextSetImage >> saveImage file2
Run Code Online (Sandbox Code Playgroud)
正如我所说,环顾四周告诉我们!
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |