Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CMYK图像通过TCPDF转为负片_Php_Pdf_Pdf Generation_Tcpdf_Cmyk - Fatal编程技术网

Php CMYK图像通过TCPDF转为负片

Php CMYK图像通过TCPDF转为负片,php,pdf,pdf-generation,tcpdf,cmyk,Php,Pdf,Pdf Generation,Tcpdf,Cmyk,我在使用TCPDF生成包含CMYK PNG文件的PDF图像时遇到问题 该系统允许用户上传照片,可以是JPG、GIF或PNG。必要时,ImageMagick将这些图像从RGB转换为CMYK。然后将图像上载到文件服务器(AmazonS3) 当显示时,图像只需在“预览”页面上以HTML格式显示在屏幕上,单击按钮即可生成PDF PDF是图像变为负片(颜色反转)的点。据我所知,在TCPDF将图像插入到文档中之前,图像将保持预期状态: $tcpdf->Image($path_to_image, 0,

我在使用TCPDF生成包含CMYK PNG文件的PDF图像时遇到问题

该系统允许用户上传照片,可以是JPG、GIF或PNG。必要时,ImageMagick将这些图像从RGB转换为CMYK。然后将图像上载到文件服务器(AmazonS3)

当显示时,图像只需在“预览”页面上以HTML格式显示在屏幕上,单击按钮即可生成PDF

PDF是图像变为负片(颜色反转)的点。据我所知,在TCPDF将图像插入到文档中之前,图像将保持预期状态:

$tcpdf->Image($path_to_image, 0, 3.5, '42', '22', $file_extension, '', '', false, 300, '', false, false, 0, false, false, false);
--->

文件类型为PNG,扩展名为
PNG
。颜色配置文件是CMYK。在浏览器中打开时,图像看起来很好

我也无法在本地的开发环境中复制它,它似乎只发生在现场,这使得复制更加困难。这似乎只发生在PNG文件中

OP在他的一篇咆哮的帖子中忽略了这个问题,但似乎没有解决它


有没有人遇到过这个问题并找到了解决方法?我猜它发生在TCPDF(v5.9.103)类的某个地方,因为源文件很好。

好吧,除非维基百科被误传,否则没有CMYK png这样的东西

以下是维基百科摘录:

PNG是为在互联网上传输图像而设计的,不支持专业质量的打印图形,因此不支持CMYK等非RGB颜色空间

我的猜测是,浏览器不关心png的颜色配置,他们总是用RGB“看到”它。我假设您将TCPDF设置为以CMYK格式输出PDF,并且由于.png文件不支持CMYK


您是否尝试过将其转换为.tiff(假设您需要保留alpha通道),然后使用Imagemagick转换为CMYK,然后再将其传递给TCPDF?

我对TCPDF一无所知,也没有尝试过CMYK PNG文件

但是,当我在PDFsharp中添加对CMYK JPEG文件的支持时,我必须为带有
/DeviceCMYK
颜色空间的JPEG图像添加一个
/DECODE
参数,该参数的值为
[1 0 1 0 1 0]
,以便在Adobe Reader中正确显示

我假设CMYK PNG文件需要非常相同的参数才能正确显示(而不是反转)

字节值255对于RGB颜色非常亮,对于CMYK颜色非常暗。Adobe Reader似乎需要一个提示来正确处理这个问题。RGB是加法,CMYK是减法

Adobe PDF参考文件介绍了DeviceCMYK颜色空间:

请注意,这些数字的含义与RGB颜色的含义相反 组成部分


.png无法使用CMYK颜色配置文件请尝试使用.jpg。最快的解决办法是

<?php

$file = "myimage.png";

$image = imagecreatefrompng($file);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));

imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);

header('Content-Type: image/jpeg');

$quality = 50;
imagejpeg($bg);
imagedestroy($bg);

?>


非常有趣-我会继续跟进!我想这是一件好事,它有这样一个微不足道的答案。我将从支持的文件扩展名列表中删除PNG,并将其保留在那里。谢谢