使用 imagemagick 產生縮圖無法呈現正確的顏色

使用 imagemagick 產生縮圖無法呈現正確的顏色

使用 imagemagick 產生 PDF 的縮圖有時渲染不正確的顏色。我們使用的是舊版的 imagemagick(6.5.7-8,這是安裝在 heroku 伺服器上的版本)。這是我們目前使用的命令:

convert \
  -size "725x1200>" \
  -colorspace RGB \
  -flatten \
  -density 300 \
  -quality 100 \
   input.pdf \
   output.jpg

我嘗試過使用不同的色彩空間,如 sRGB、YIQ 等,但它們都沒有正確渲染顏色。

在本地使用 imagemagick-6.7.7-6 有效,因此我嘗試將“convert”命令捆綁在我的應用程式 /bin 目錄中,該命令有效,但結果仍然錯誤,因此問題似乎來自另一個 imagemagick “convert”使用的命令或來自另一個庫的命令。

這是輸出的範例:

  • 正確輸出:在左邊
  • 錯誤輸出:在右邊
    正確輸出 輸出不正確

奇怪的是,對於同一 pdf 的某些頁面,輸出總是正確的。知道哪個庫或命令可能是問題所在,或者是否有一組適當的選項可以傳遞給 imagemagick 以始終保持正確?

答案1

經過更多調查後,問題似乎來自 Ghostscript,它缺少這個-dUseCIEColor選項。根據我在網路上收集的信息,不可能透過 imagemagick 將參數傳遞給 Ghostscript。不過,可以將這兩個命令與管道一起呼叫:https://stackoverflow.com/questions/653380/converting-a-pdf-to-png

我的具體用例

這對於我的用例來說有點具體,但我認為有人可能感興趣。當我們在 Rails 應用程式中透過 Paperclip 產生縮圖時,我創建了一個新的回形針處理器來處理 pdf 到 jpg 的轉換,然後 imagemagick 接管進行通常的大小調整。我的程式碼與範例如下:https://gist.github.com/3059321

相關內容