im和gm的缩略图悲剧


在这个时间点发布的一篇blog已经足以说明我现在的郁闷的状况…不仅各种崩溃的找原因,各种崩溃的调试代码…

最后还是得在这里说明一下…其实很多东西官方是给出了一些解决方法的.但是中文的许多帖子的什么例子啊.教程却很有问题

关于在im或者gm环境下生成缩略图的方法.中文的主要是这一篇:尝 试使用GraphicsMagick的缩略图功能

确实给出了实际的效果图片和所用到的代码

对于我遇到的问题,需要生成的缩略图,并且一定的裁剪形成特定的大小..

按照他的说法,最开始采用命令:


# 嗯.我是归来的撑场面的

gm convert inputA.jpg -thumbnail '100x100^' -gravity center -extent 100x100 outputA.jpg

但是在测试服务器上就是死活都出不来效果.生成的图片是把原图按比例缩小,然后以设置的缩略图补白….

实际的效果和引用来源的缩略图4方式一样.

这我就我非常的奇怪了.明明用的是3的方法.为啥出来的东西就是死活不行呢?

为了这个问题各种重装软件啊..查看版本啊..什么相对路径绝对路径什么的全搞上了还是不行…..

最后只能耐着性子去一步步的查看官方的全英文说明教程

在gm官方的 http://www.graphicsmagick.org/GraphicsMagick.html#details-gravity 这个页面上,有一段小的例子:

# 大家好,撑场面君我又出现了
gm convert infile.jpg -thumbnail 120x80 -background red -gravity center -extent 140x100 outfile.jpg

按照这个说明,和刚才的第一次的命令对比,发现没有太大差别.但是还是试了试,确实结果没有区别..

这久很奇怪了..继续查的时候发现im网站有专门的一页是讲述怎么生成缩略图的

http://www.imagemagick.org/Usage/thumbnails/

扫了一下目录,发现确实有一篇叫做"Cut the Thumbnail to Fit“的文档.在这个文档里面的例子确实完好的显示了怎么支持裁剪缩略图的啊!

魂淡.似乎查找的进入了一个死胡同….

绕来绕去的把这几个页面反反复复的看了很多遍….终于在一个既没有加粗也没有提示的地方发现了一个另外的连接:

error_doc

点进去之后大概的看了一下没发现什么特别的.只是提到了im的6.3.8及以后裁支持一些新特性…但是在一个字一个字的嚼文档的时候,发现了一个特殊的地方

<!-- 撑场面的我路过了一下 -->;
The Fill Area Flag ('^' flag) is a special character in Window batch scripts and you will need to escape that character by doubling it. For example '^^', or it will not work. See <a href="http://www.imagemagick.org/Usage/windows/">;Windows Batch Scripting</a>; for this and other windowing particularities.

坑爹啊这是!尼玛死的还有这个说明啊!为什么不在显眼的地方标注出来啊!玩老子的时间啊!

吐槽完了之后心情也平静下来了.按照它说的方法添加了一个^之后测试..果然就好了…

这下要不酸腿不痛了.一口气能缩略10W数量级的图片了….(其实是想吐槽对win32认真你就输了)

win下面还有很多需要注意的点.其实官方都已经说明文档很清楚了..但是还希望中文本地化方面得到加强…

总结

其实这又算是一个有点自找的问题.不过个人觉得还是有一定的教育意义,……..

  1. 软件既然都这么发展成熟了.那么出现这种低级bug的可能是非常小的(一开始我就没考虑过是软件bug)
  2. 然后遇到不会的要学会google..中文的查不到就得英文的关键字...还不行的话就按照官方文档的仔细读一通,不能漏过再怎么不显眼的地方(这次主要就是阅读英文不仔细啊...)
  3. 然后最重要的是坚信自己能解决问题.这个才是帮助我们进步(其实你丫就是瞎折腾吧)的动力....
最后的最后附录一样的位置放上官方的一个说明的链接.

http://www.imagemagick.org/Usage/windows/#pitfalls

我这次遇到的问题所在的位置是:

error_doc

希望以后大家在win32下面遇到问题时能想到去参考上面提到的~

comments powered by Disqus