【问题标题】:ImageMagick messing up + enlarging GIFsImageMagick 搞砸了 + 放大 GIF
【发布时间】:2017-01-11 01:17:38
【问题描述】:

我正在使用 node 的 gm 模块和 imagemagick,它似乎真的弄乱了一些我需要调整大小的 GIF。是否有适合 GIF 的良好配置?例如,我尝试调整此 GIF 的大小:

https://postimg.org/image/4ngzc5igh/

它最终看起来像这样:

https://postimg.org/image/xolblk2wh/

代码:

var gm = require('gm').subClass({ imageMagick: true });
gm(file.path).gravity('Center')
  .modulate(config.brightness)
  .noProfile()
  .resize(config.width, config.height, config.geometry)
  .crop(config.width, config.height);

【问题讨论】:

    标签: node.js image-processing imagemagick


    【解决方案1】:

    我不会说node,但希望能帮到你。您正在处理一个动画 GIF,它们在帧之间进行了高度优化,只覆盖图像的更改部分以减小大小。

    通常,您需要使用-coalesce 将图像拆分为单独的帧,并重新创建每个帧包括所有优化的远离部分。然后,您调整所有帧的大小并将它们重新组合在一起并重新优化图层。

    命令看起来像这样:

    convert animated.gif -coalesce -resize 200x100 -modulate A,B,C -layers optimize result.gif
    

    如果你检查你的熊的框架,你会发现有 37 个框架,它们都是不同的大小和不同的位置,以便对每个框架的特定部分进行重绘:

    identify bear.gif
    

    输出

    bear.gif[0] GIF 500x500 500x500+0+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[1] GIF 262x449 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[2] GIF 262x449 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[3] GIF 262x449 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[4] GIF 262x449 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[5] GIF 246x449 500x500+137+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[6] GIF 266x449 500x500+137+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[7] GIF 256x449 500x500+171+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[8] GIF 263x453 500x500+171+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[9] GIF 239x453 500x500+195+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[10] GIF 260x453 500x500+195+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[11] GIF 265x453 500x500+190+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[12] GIF 244x453 500x500+190+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[13] GIF 257x453 500x500+177+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[14] GIF 249x445 500x500+177+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[15] GIF 270x444 500x500+156+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[16] GIF 247x449 500x500+156+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[17] GIF 269x449 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[18] GIF 247x443 500x500+121+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[19] GIF 258x457 500x500+110+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[20] GIF 243x457 500x500+110+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[21] GIF 272x457 500x500+81+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[22] GIF 240x457 500x500+81+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[23] GIF 261x444 500x500+60+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[24] GIF 250x446 500x500+60+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[25] GIF 270x446 500x500+40+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[26] GIF 245x443 500x500+40+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[27] GIF 249x443 500x500+36+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[28] GIF 261x445 500x500+36+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[29] GIF 254x445 500x500+43+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[30] GIF 277x444 500x500+43+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[31] GIF 251x444 500x500+69+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[32] GIF 270x444 500x500+69+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[33] GIF 258x457 500x500+83+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[34] GIF 285x457 500x500+83+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[35] GIF 248x443 500x500+120+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    bear.gif[36] GIF 266x443 500x500+120+0 8-bit sRGB 256c 1.802MB 0.000u 0:00.009
    

    您可以使用以下命令查看各个合并的帧:

    convert bear.gif -coalesce miff:- | montage -tile 8x -geometry +5+5 - frames.gif
    

    【讨论】:

    • 看起来可能是问题所在,我会检查一下,然后标记您的答案——只是一个问题,hte -coalesce 标志是否会导致转换 jpeg 或其他平面图像时出现任何问题(即:我可以将它留在命令中用于混合图像类型的大目录吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多