PHP Imagick 不会添加 ICC 颜色配置文件
PHP Imagick won't add ICC color profile
我正在做一个项目,在这个项目中我不得不学习一些颜色配置文件,但仍然是一个新手。此代码似乎没有添加 icc 配置文件:
$im = new Imagick;
$im->readImage('input.tif');
print_r($im->getImageProfiles('*', false));
$im->stripImage();
$im->profileImage('icc', file_get_contents('myprofile.icc'));
print_r($im->getImageProfiles('*', false));
结果:
Array
(
[0] => 8bim
[1] => icc
[2] => xmp
)
Array
(
)
如果我将参数 icc
更改为 any 其他字符串,它会出现在输出中,但文件大小不会改变(不确定是否会改变) .
$im->profileImage('testWhatever', file_get_contents('myprofile.icc'));
这在第二个 print_r()
输出中显示 testWhatever
。
可能是什么问题,我该如何调试?关于这个主题,我几乎阅读了这里的所有 post 篇文章,我很乐意提供更多信息。
调试说明,希望这里的内容有用:
- 版本:ImageMagick 7.0.7-11 Q16 i686 2017-11-12
- PHP 版本 5.6.4
- Tiff 文件为 CMYK
convert -list configure
的输出
Path: /usr/local/lib/ImageMagick-7.0.7//config-Q16HDRI/configure.xml
Name Value
-------------------------------------------------------------------------------
CC gcc -std=gnu99 -std=gnu99
CFLAGS -I/usr/include/libxml2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/freetype2 -fopenmp -g -O2 -Wall -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
CODER_PATH /usr/local/lib/ImageMagick-7.0.7/modules-Q16HDRI/coders
CONFIGURE ./configure
CONFIGURE_PATH /usr/local/etc/ImageMagick-7/
COPYRIGHT Copyright (C) 1999-2017 ImageMagick Studio LLC
CPPFLAGS -I/usr/local/include/ImageMagick-7
CXX g++
CXXFLAGS -g -O2 -pthread
DEFS -DHAVE_CONFIG_H
DELEGATES bzlib mpeg fontconfig freetype jng jpeg pango png ps tiff x xml zlib
DISTCHECK_CONFIG_FLAGS --disable-deprecated --with-quantum-depth=16 --with-jemalloc=no --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-rsvg=no --with-perl=no
DOCUMENTATION_PATH /usr/local/share/doc/ImageMagick-7
EXEC-PREFIX /usr/local
EXECUTABLE_PATH /usr/local/bin
FEATURES DPC HDRI Cipher OpenMP
FILTER_PATH /usr/local/lib/ImageMagick-7.0.7/modules-Q16HDRI/filters
GIT_REVISION 12832
HOST i686-pc-linux-gnu
INCLUDE_PATH /usr/local/include/ImageMagick-7
LDFLAGS -L/usr/local/lib
LIB_VERSION 0x707
LIB_VERSION_NUMBER 7,0,7,11
LIBRARY_PATH /usr/local/lib/ImageMagick-7.0.7
LIBS -ltiff -lfreetype -ljpeg -lpng12 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -pthread -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lxml2 -lz -lm -lgomp
NAME ImageMagick
PCFLAGS -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
PREFIX /usr/local
QuantumDepth 16
RELEASE_DATE 2017-11-21
SHARE_PATH /usr/local/share/ImageMagick-7
SHAREARCH_PATH /usr/local/lib/ImageMagick-7.0.7/config-Q16HDRI
TARGET_CPU i686
TARGET_OS linux-gnu
TARGET_VENDOR pc
VERSION 7.0.7
WEBSITE http://www.imagemagick.org
Path: [built-in]
Name Value
-------------------------------------------------------------------------------
FEATURES OpenMP
NAME ImageMagick
QuantumDepth 16
感谢 profileImage
手册页上的评论:
http://php.net/manual/en/imagick.profileimage.php
解决方案:安装LCMS委托并重新编译ImageMagick,您可能还需要删除并重新安装PHP扩展。
If profileImage()
seems to be doing nothing — and "inverted colors" during a CMYK > RGB conversion is a sign of this — check that ImageMagick has the lcms delegate available.
From a command prompt:
convert -list configure | grep DELEGATES
If you don't see lcms in the list then Imagick won't do any color
profile conversions, and won't give any warnings about this. In that
case, install the Little CMS library ( http://www.littlecms.com/ ) and
recompile ImageMagick.
我正在做一个项目,在这个项目中我不得不学习一些颜色配置文件,但仍然是一个新手。此代码似乎没有添加 icc 配置文件:
$im = new Imagick;
$im->readImage('input.tif');
print_r($im->getImageProfiles('*', false));
$im->stripImage();
$im->profileImage('icc', file_get_contents('myprofile.icc'));
print_r($im->getImageProfiles('*', false));
结果:
Array
(
[0] => 8bim
[1] => icc
[2] => xmp
)
Array
(
)
如果我将参数 icc
更改为 any 其他字符串,它会出现在输出中,但文件大小不会改变(不确定是否会改变) .
$im->profileImage('testWhatever', file_get_contents('myprofile.icc'));
这在第二个 print_r()
输出中显示 testWhatever
。
可能是什么问题,我该如何调试?关于这个主题,我几乎阅读了这里的所有 post 篇文章,我很乐意提供更多信息。
调试说明,希望这里的内容有用:
- 版本:ImageMagick 7.0.7-11 Q16 i686 2017-11-12
- PHP 版本 5.6.4
- Tiff 文件为 CMYK
convert -list configure
Path: /usr/local/lib/ImageMagick-7.0.7//config-Q16HDRI/configure.xml
Name Value
-------------------------------------------------------------------------------
CC gcc -std=gnu99 -std=gnu99
CFLAGS -I/usr/include/libxml2 -I/usr/include/libpng12 -pthread -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/freetype2 -fopenmp -g -O2 -Wall -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
CODER_PATH /usr/local/lib/ImageMagick-7.0.7/modules-Q16HDRI/coders
CONFIGURE ./configure
CONFIGURE_PATH /usr/local/etc/ImageMagick-7/
COPYRIGHT Copyright (C) 1999-2017 ImageMagick Studio LLC
CPPFLAGS -I/usr/local/include/ImageMagick-7
CXX g++
CXXFLAGS -g -O2 -pthread
DEFS -DHAVE_CONFIG_H
DELEGATES bzlib mpeg fontconfig freetype jng jpeg pango png ps tiff x xml zlib
DISTCHECK_CONFIG_FLAGS --disable-deprecated --with-quantum-depth=16 --with-jemalloc=no --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-rsvg=no --with-perl=no
DOCUMENTATION_PATH /usr/local/share/doc/ImageMagick-7
EXEC-PREFIX /usr/local
EXECUTABLE_PATH /usr/local/bin
FEATURES DPC HDRI Cipher OpenMP
FILTER_PATH /usr/local/lib/ImageMagick-7.0.7/modules-Q16HDRI/filters
GIT_REVISION 12832
HOST i686-pc-linux-gnu
INCLUDE_PATH /usr/local/include/ImageMagick-7
LDFLAGS -L/usr/local/lib
LIB_VERSION 0x707
LIB_VERSION_NUMBER 7,0,7,11
LIBRARY_PATH /usr/local/lib/ImageMagick-7.0.7
LIBS -ltiff -lfreetype -ljpeg -lpng12 -lfontconfig -lXext -lXt -lSM -lICE -lX11 -lbz2 -pthread -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lxml2 -lz -lm -lgomp
NAME ImageMagick
PCFLAGS -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
PREFIX /usr/local
QuantumDepth 16
RELEASE_DATE 2017-11-21
SHARE_PATH /usr/local/share/ImageMagick-7
SHAREARCH_PATH /usr/local/lib/ImageMagick-7.0.7/config-Q16HDRI
TARGET_CPU i686
TARGET_OS linux-gnu
TARGET_VENDOR pc
VERSION 7.0.7
WEBSITE http://www.imagemagick.org
Path: [built-in]
Name Value
-------------------------------------------------------------------------------
FEATURES OpenMP
NAME ImageMagick
QuantumDepth 16
感谢 profileImage
手册页上的评论:
http://php.net/manual/en/imagick.profileimage.php
解决方案:安装LCMS委托并重新编译ImageMagick,您可能还需要删除并重新安装PHP扩展。
If
profileImage()
seems to be doing nothing — and "inverted colors" during a CMYK > RGB conversion is a sign of this — check that ImageMagick has the lcms delegate available.From a command prompt:
convert -list configure | grep DELEGATES
If you don't see lcms in the list then Imagick won't do any color profile conversions, and won't give any warnings about this. In that case, install the Little CMS library ( http://www.littlecms.com/ ) and recompile ImageMagick.