菜单

Imagemagick CMYK

2010年10月15日 - imagemagick

一般场景

图片缩放

这方面的属于入门级内容,使用ImageMagick必定会用到该方面的功能。主要涉及到 -resize 参数,下面该参数效果进行展示(尺寸参数的细节请参考这里):

original
原图
100x100
100×100
100x100^
100×100^
100x100!
100×100!
100x100>
100×100>
100x100<
100×100<

图片压缩

图片压缩从两方面着手:quality和profile

1 convert [original image] -quality 85 [new image]
1 convert [original image] -strip [new image]

特殊场景

特殊缩放

有时候会有这样的要求:

  1. 当图片太大时缩小。
  2. 当图片太小时,不进行放大,而是在其周围填充白边。如下面所示:

white-padding

解决思路是利用ImageMagick的合成功能。先使用-resize缩小太大的图片。接着再使用-composite参数,跟一张预先准备好的空白图合并,即可实现这种要求。具体命令如下:

1 convert [original image]  -resize 220x220'>' -gravity center white.png +swap  -composite [new image]

这种方式也容易合成特殊的背景图,只需要把白色图换为其他图片即可。

处理CMYK图片

跟RGB一样,CMYK也是一种描述颜色的方式。RGB使用红、绿、蓝三色来表示色彩。CMYK则是青、品红色、黄色、黑色表示色彩。当用户上传这种颜色的图片而我们没有妥善处理时,就会出现一些意想不到的情况。先准备三张图片,分别是:

  1. CMYK颜色的原始图片
  2. 对图1使用 -strip 处理后的图片
  3. 图1从CMYK转换为RGB后的图片

三张图片在不同浏览器的表现如下: Test-Chrome+Safari Test-Firefox Test-IE

通过以上可以发现:

  1. 大部分浏览器不完全支持CMYK图片。其中Chrome和Safari支持的最好,Firefox则默认使用RGB颜色显示图片,IE(6,7,8)则根本不支持CMYK(所以出现了X)。
  2. 从CMYK转为RGB,不可避免的会出现颜色失真。可以对比Chrome的第一张和第三张图片的颜色区别。
  3. 去除全部profile后,会导致图片严重失真。因为CMYK颜色表是存储在profile中的,一旦去除就无法获知确切的颜色,所以Chrome和Safari在显示第二张图片时才会那么怪异。

综上,在处理CMYK图片时要注意以下2个问题:

  1. 为了兼容所有浏览器,必须将图片都转换为RGB颜色。在ImageMagick加入参数-colorspace RGB即可。至于从CMYK到RGB后颜色失真的问题,则是不可避免的。不妨把这个任务交给用户。若用户觉得这种失真是不可接受的,则可以自行转换并重新上传。
  2. 若想保留CMYK颜色的同时去除profiles,则要保留颜色相关的profile。所以不能再使用 -strip,而是要使用+profile 来选择性的保留profile。8bim, icc, icm存储CMYK颜色表的常见profile,因而我们的参数便是:
1 convert [original image] +profile '!8bim, !icc, !icm, *' [new image]
2 (去除8bim, icc, icm外的所有profile)。

另外,你也许想要知道图片还包含了哪些profile,则可以用ImageMagick的另外一个工具identify:

1 identify -verbose [image] | grep 'Profile-.*bytes'

总结

缩放

1 convert [original image] -resize <参数> [new image]

压缩(兼容所有的浏览器)

1 convert [original image] -quality 85 -strip -colorspaec RGB [new image]

压缩(保留完整图片颜色)

1 convert [original image] -quality 85 +profile '!8bim, !icc, !icm, *' [new image]

特殊缩放(放大时留白边)

1 convert [original image]  -resize 220x220'>' -gravity center  [background image] +swap  -composite [new image]

发表评论

电子邮件地址不会被公开。 必填项已用*标注