[英]Convert CMYK PDF to SRGB JPG using PHP and Imagick
我正在嘗試使用 Imagick 和 PHP 將 PDF 文檔的第一頁轉換為 JPEG。 只要 PDF 的色彩空間是 SRGB,轉換就會成功並且生成的圖像具有正確的顏色。 但是,如果 PDF 具有 CMYK 色彩空間,則轉換后圖像顏色會關閉(更亮或更暗)。
我目前正在使用以下軟件:
我正在 Windows 10 上開發 WSL2。
我的測試 PDF 可以在這里找到。
因為我對結果轉換不滿意,所以我首先嘗試查看是否可以使用 Imagick cli 進行成功轉換。 經過大量的反復試驗,我發現以下命令產生了最好的結果:
convert -density 300 -colorspace srgb input.pdf[0] -layers flatten -strip output.jpg
結果:
然后我將命令重寫為 PHP:
$input = 'input.pdf';
$output = 'output.pdf';
$image = new Imagick();
$image->setResolution(300, 300);
$image->readImage("{$input}[0]");
$image->transformImageColorspace(Imagick::COLORSPACE_SRGB);
$image = $image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->setImageFormat('jpeg');
$image->stripImage();
$image->writeImage($output);
$image->destroy();
結果:
PHP 代碼的結果與 CLI 版本和原始 PDF 的結果不一樣。 結果與我按照 CLI 命令運行 te 一樣:
convert -density 300 input.pdf[0] -colorspace srgb -layers flatten -strip output.jpg
該命令看起來幾乎相同,但是顏色空間的轉換發生在稍后。
我的問題是:我在 PHP 代碼中遺漏了什么步驟來實現與命令相同的結果
convert -density 300 -colorspace srgb input.pdf[0] -layers flatten -strip output.jpg
附加信息:我還嘗試使用顏色配置文件進行色彩空間轉換。 代替
$image->transformImageColorspace(Imagick::COLORSPACE_SRGB);
我用了
$cmyk = file_get_contents('USWebCoatedSWOP.icc');
$rgb = file_get_contents('sRGB_v4_ICC_preference.icc');
$image->profileImage('icc', $cmyk);
$image->profileImage('icc', $rgb);
除了這兩個配置文件,我還嘗試了其他 CMYK(CoatedFOGRA39、JapanColor2001Coated...)和 SRGB(AdobeRGB1998、AppleRGB、sRGB_v4_ICC_preference_displayclass...)配置文件的組合。
但是,我找不到接近 CLI 輸出結果和原始 PDF 文件的配置文件組合。
感謝@fmw42,我能夠解決我的問題。 要修復它,請在閱讀 pdf 之前使用setColorSpace()
設置色彩空間。
$input = 'input.pdf';
$output = 'output.pdf';
$image = new Imagick();
$image->setResolution(300, 300);
$image->setColorSpace(Imagick::COLORSPACE_SRGB); // Add this line
$image->readImage("{$input}[0]");
// $image->transformImageColorspace(Imagick::COLORSPACE_SRGB); // You don't need this line
$image = $image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->setImageFormat('jpeg');
$image->stripImage();
$image->writeImage($output);
$image->destroy();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.