gpt4 book ai didi

php - PDF 缩略图总是使用 Imagick 生成为灰度

转载 作者:行者123 更新时间:2023-12-03 16:43:17 24 4
gpt4 key购买 nike

我被卡住了,真的可以在这个问题上使用一些帮助。我正在使用 PHP 和 Imagick 生成一个运行良好的缩略图。但是,我注意到 CMYK PDF 总是以灰度生成。因此,我通过获取 CMYK PDF 并使用 Adob​​e Acrobat Pro 手动将其转换为 RGB 来对此进行测试。然后我通过以下代码重新运行它并生成了一个彩色图像。我知道

$image->transformImageColorSpace(1);
or
$image->setImageColorSpace(1);

然而这行不通。 将 pdf 转换为彩色 PNG 图像的正确方法是什么? 我查看了以下链接但没有运气:

http://php.net/manual/en/imagick.setimagecolorspace.php

Convert PDF to JPEG with PHP and ImageMagick

对此的任何帮助都会很棒。

这是代码:
$filePath = fileSaveUserUpload("path/to/file", ""); //path changed here...
$_SESSION['FILEPATH'] = $filePath;

//-------------first makes a thumbnail of first page in image/pdf
$extension_pos = strrpos($filePath, '.'); // find position (number) of the last dot, so where the extension starts

$image = new Imagick();
$image->readImage($filePath."[0]"); //reads an image at a path(first page only in this case)
$image->transformImageColorSpace(1); //convert to RGB
$image->setbackgroundcolor('white'); //replace transparency with this color
$image->setCompression(Imagick::COMPRESSION_LOSSLESSJPEG);
$image->setCompressionQuality(150);
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE); //remove transparency
$image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); //make everything that was transparent white
$image->thumbnailImage(0,250); //max height 300 but try and preserve aspect ratio (wdithxheight)
$thumbnail = substr($filePath, 0, $extension_pos) . '_thumb.png';// . substr($filePath, $extension_pos);

$image->writeImage($thumbnail);
$image->clear();
$image->destroy();

更新:

我正在使用以下 imagick 版本:

ImageMagick 6.9.1-2 Q16 x86 2015-04-14

3.3.0RC2

幽灵脚本版本:
9.18

这是原始PDF(在此处将其更改为图片):

enter image description here

这是它生成的缩略图:

enter image description here

这仅发生在 CMYK PDF 中。如果我使用相同的 PDF 并通过 adobe acrobat 将其转换为 RGB,它会显示颜色。我对此进行了测试,它仍然适用。

最佳答案

2019 年的问候。在 gs 9.26 上仍然存在这个问题(9.27 根本不起作用)

在加载文件之前设置颜色空间,在之后转换它。

// setup imagick for colour
$Img = new Imagick();
$Img->SetResolution(200,200);
$Img->SetColorspace(Imagick::COLORSPACE_SRGB);

// now read pdf first page.
$Img->ReadImage("{$File}[0]");
$Img->TransformImageColorSpace(Imagick::COLORSPACE_SRGB);

// the rest of your stuff.

关于php - PDF 缩略图总是使用 Imagick 生成为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com