将PDF(具有透明度*和* CMYK)转换为jpg

ros

我需要从PDF文件生成jpg图片(仅首页)。PDF文件是用户生成的,因此可以包含任何内容。我当前正在使用以下代码:

// Load PDF.
$i = new Imagick;

// Create thumbnail of first page of PDF.
$i->setResolution(150, 150);
$i->loadImage("test.pdf[0]");
$i->thumbnailImage(640, 480, true);

// Remove transparency, fill transparent areas with white rather than black.
$i->setImageBackgroundColor("white");
$i->setImageAlphaChannel(11); // Imagick::ALPHACHANNEL_REMOVE
$i->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

// Output.
$i->writeImage("test.jpg");

这可以按预期工作,因为透明度变为白色而不是黑色。但是,我遇到了一些生成的jpg图像的问题,因此我遇到jpeginfo了它们:

$ jpeginfo -c test.jpg

test.jpg 960 x 480 32位JFIF N 9481不支持的颜色转换请求[错误]

事实证明,某些源PDF实际上使用CMYK,并且当另存为jpg时显然不会转换为RGB。因此,我将代码更改为以下内容(添加了一行)以显式转换为RGB:

// Load PDF.
$i = new Imagick;

// Create thumbnail of first page of PDF.
$i->setResolution(150, 150);
$i->loadImage("test.pdf[0]");
$i->thumbnailImage(640, 480, true);

// Remove transparency, fill transparent areas with white rather than black.
$i->setImageBackgroundColor("white");
$i->setImageAlphaChannel(11); // Imagick::ALPHACHANNEL_REMOVE
$i->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);

// Convert to RGB to prevent creating a jpg with CMYK colors.
$i->setImageColorspace(Imagick::COLORSPACE_RGB);

// Output.
$i->writeImage("test.jpg");

这样会创建一个带有RGB颜色配置文件的jpeg 但是,由于某些晦涩的原因,它会再次产生黑色背景的图像换句话说:透明度问题又回来了。为什么Imagick这样做,更重要的是,透明性问题和透明性问题的解决方案是什么CMYK

达纳克

正确使用的函数是transformImageColorspace而不是setImageColorspace。TransformImageColorspace用于现有图像,setImageColorspace用于新图像,例如svg绘图。

我已将其添加到手册中,并且应该很快就会出现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将具有透明度的png图像转换为jpg会破坏图像

来自分类Dev

使用PHP和Imagick将CMYK PDF转换为SRGB JPG

来自分类Dev

将PDF转换为CMYK,但忽略黑色?

来自分类Dev

将JPG转换为PDF

来自分类Dev

将PHAsset转换为UIImage时失去透明度

来自分类Dev

FFmpeg:将透明度转换为特定颜色

来自分类Dev

将PHAsset转换为UIImage时失去透明度

来自分类Dev

ghostscript:将PDF转换为保留纯黑色文本的CMYK

来自分类Dev

将PDF转换为CMYK,但忽略黑色吗?

来自分类Dev

如何在不转换白色背景介绍透明度的情况下将PDF转换为PNG

来自分类Dev

将透明 png 转换为 jpg powershell

来自分类Dev

载波RMagick不会在转换为jpg时删除透明度

来自分类Dev

将jpg转换为pdf时出错

来自分类Dev

将jpg转换为pdf时出错

来自分类Dev

右键单击将PDF转换为JPG?

来自分类Dev

转换mp4到webm具有透明度?

来自分类Dev

如何将RGB图像转换为cmyk?

来自分类Dev

使用Node JS将图像从RGB转换为CMYK

来自分类Dev

如何为jpg添加透明填充并将其另存为具有透明度的png?

来自分类Dev

将JPG转换为具有背景透明性的PNG

来自分类Dev

将所有非JPG图像转换为JPG

来自分类Dev

PDF转换为单张,连续JPG

来自分类Dev

将webm转换为jpg或png

来自分类Dev

将webm转换为jpg或png

来自分类Dev

Grunt 将 .png 转换为 .jpg 文件

来自分类Dev

关于将PNG转换为JPG

来自分类Dev

将灰度图像转换为渐进黑色加上透明度?

来自分类Dev

无法将 Photoshop 不透明度转换为 CSS3

来自分类Dev

将位图(rgb)与TIFF(cmyk)连接起来,而无需将cmyk转换为rgb