如何在PHP中识别CMYK图像
谁能告诉我如何使用 PHP 识别图像是 CMYK 还是 RGB?
Can anyone tell me how to identify an image if it is in CMYK or RGB using PHP ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
谁能告诉我如何使用 PHP 识别图像是 CMYK 还是 RGB?
Can anyone tell me how to identify an image if it is in CMYK or RGB using PHP ?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
仔细看看 getimagesize。
示例:
它返回一个包含 7 个元素的数组。
索引 0 和 1 分别包含图像的宽度和高度。
索引 2 是指示图像类型的 IMAGETYPE_XXX 常量之一。
索引 3 是一个文本字符串,具有正确的 height="yyy" width="xxx" 字符串,可以直接在 IMG 标记中使用。
mime是图像对应的MIME类型。此信息可用于传递具有正确 HTTP Content-type 标头的图像:
RGB 图片的通道为 3,CMYK 图片的通道为 4。
位是每种颜色的位数。
对于某些图像类型,通道和位值的存在可能有点令人困惑。例如,GIF 每个像素始终使用 3 个通道,但对于具有全局颜色表的动画 GIF,无法计算每个像素的位数。
失败时,返回 FALSE。
Take a good look at getimagesize.
Example:
It returns an array with 7 elements.
Index 0 and 1 contains respectively the width and the height of the image.
Index 2 is one of the IMAGETYPE_XXX constants indicating the type of the image.
Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.
mime is the correspondant MIME type of the image. This information can be used to deliver images with the correct HTTP Content-type header:
channels will be 3 for RGB pictures and 4 for CMYK pictures.
bits is the number of bits for each color.
For some image types, the presence of channels and bits values can be a bit confusing. As an example, GIF always uses 3 channels per pixel, but the number of bits per pixel cannot be calculated for an animated GIF with a global color table.
On failure, FALSE is returned.
这里有两个实现。此版本使用 GD:
此版本使用 ImageMagick:
GD 版本对我来说大约快 18 倍。 imagemagick 版本还将识别其他格式的 CMYK,例如 TIFF。
Here are two implementations. This version uses GD:
This version uses ImageMagick:
The GD version is about 18 times faster for me. The imagemagick version will also spot CMYK in other formats, such as TIFF.
如果图像是 jpg 格式,您可以检查 jpeg 标头中的 SOF(帧开始 - SOF0 或 SOF2)部分(请参阅 http://en.wikipedia.org/wiki/JPEG)
$img_data
变量是原始文件内容(例如$img_data = file_get_contents($文件名)
)If the image is in jpg format, you can check SOF (Start Of Frame - SOF0 or SOF2) section in jpeg header (see http://en.wikipedia.org/wiki/JPEG)
$img_data
variable is the raw file contents (e.g.$img_data = file_get_contents($filename)
)对我来说,没有一个答案足够准确。使用 Imagemagick。
要获取颜色空间(即“RGB”、“CMYK”等):
exec('identify -format "%[colorspace]\n" '.$imagePath);
要获取颜色配置文件:
exec('identify -format "%[profile:icc]\n" '.$imagePath);
None of the answers are accurate enough for me. Use Imagemagick.
To get color space (ie. 'RGB', 'CMYK', etc):
exec('identify -format "%[colorspace]\n" '.$imagePath);
To get color profile:
exec('identify -format "%[profile:icc]\n" '.$imagePath);