Jps*_*psy 6 php rgb png gdlib grayscale
我需要在PHP中创建灰度图像.我不是在谈论其调色板中具有灰度值的索引图像,而是关于真正的灰度图像.区别在于PNG的第26个字节(颜色类型):
0 - greyscale <-- THIS IS WHAT I NEED
2 - RGB
3 - RGB with palette
4 - greyscale + alpha
6 - RGB + alpha
Run Code Online (Sandbox Code Playgroud)
(有关详细信息,请参阅如何检查PNG的灰度/ alpha颜色类型?)
我尝试imagefilter($im, IMG_FILTER_GRAYSCALE);过,imagetruecolortopalette($im, false, 255);但我得到的是RGB灰度图像(颜色类型2)或带有灰度调色板(颜色类型3)的RGB调色板图像.我也试图初始化图像,imagecreate()而不是imagecreatetruecolor()再次,这只会导致调色板图像.
有没有办法用PHP的GD函数(或PHP中的任何其他函数)创建颜色类型0灰度PNG?
以下是一些不同灰度图像的样本,以显示我的意思.它们看起来都一样,但是如果你在PhotoShop中打开它们并查看图像 - >模式设置,你会看到差异.十六进制编辑器也会显示第26个字节的差异:
RGB,颜色类型 2,31449字节
RGB调色板,颜色类型 3,3971字节
真灰度图像,颜色类型 0,1105字节< - 这是我需要的
更新01:
这是我用来创建PNG的基本代码.注释行是我尝试的替代方案:
//$im = imagecreate($image_size, $image_size);
$im = imagecreatetruecolor($image_size, $image_size);
//imagefilter($im, IMG_FILTER_GRAYSCALE);
//imagetruecolortopalette($im, false, 255);
imagepng($im, $imgPathName);
imagedestroy($im);
Run Code Online (Sandbox Code Playgroud)
GD库不支持转换为"真实"灰度.它只支持RGB和TrueColor*.
有没有办法用PHP的GD函数(或PHP中的任何其他函数)创建颜色类型0灰度PNG?
ImageMagick正是您所需要的.
$im = new Imagick();
$im->readImage('file.png');
$im->setImageType(Imagick::IMGTYPE_GRAYSCALE);
$im->writeImage('file.gray.png');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3441 次 |
| 最近记录: |