2014-11-06 94 views
1

覆蓋的部分後面的白色背景,結果PDF文件轉換我試着使用的ImageMagick(v6.8.9-9 Q16),以含有嵌入到一個PNG PNG文件爲PDF轉換文件。使用ImageMagick具有在其中光柵由光柵

original PNG file具有透明背景。在PDF也看起來很好。但在PNG obtained after conversion中,PDF中最初由PNG佔據的區域具有白色背景。請參閱鏈接更清晰。

我跑的命令如下:

convert -colorspace sRGB dice.pdf converted_dice.png

我也嘗試設置-transparent white開關,但它最終取出了最終圖像中實際上需要的白人。

是否有任何額外的開關或參數傳遞給convert爲了擺脫眼前這個白色的背景?

+0

沒有*「包含PNG文件的PDF」*。一旦圖像位於PDF內部,它就是柵格數據(對於這些柵格數據塊有各種壓縮方案 - 其中一個與JPEG使用相同)。它以前可能是一個PNG文件,但它不再是。沒有辦法從PDF數據中發現這一點。當然,您可以提取柵格數據並將它們再次轉換爲PNG格式。或者轉換爲TIFF,GIF,JPEG ......如果您對PDF的創建沒有預知,那麼您將不會了解包含的圖像以前的生命形式...... – 2014-11-14 21:58:40

回答

1

您對此任務的處理方式無法正常工作。

您將使用完整的信紙大小的PDF頁面(612 X 792磅)轉換成PNG圖像的命令。

然而,嵌入到PDF頁面(612 X 792磅)的圖像的原尺寸爲800×600像素。這可以通過運行pdfimages -list可以看出:

pdfimages -list dice.pdf 
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio 
---------------------------------------------------------------------------------------- 
    1 0 image 800 600 rgb  3 8 image no  12 0 72 72 277K 20% 
    1 1 smask 800 600 gray  1 8 image no  12 0 72 72 50.1K 11% 

所以轉換PDF頁面時,這是第一個問題:它不給你所包含的圖像的正確尺寸。

然而,第二,更根本的問題是:你從轉換PDF頁面得到任何圖像重疊在對方,因爲他們是從頁區域中的所有PDF對象的組合。 (當然,您只能裁剪頁面的一部分 - 但同樣也可以將裁剪區域中的所有PDF對象組合在一起...)。當您嘗試將所有白色像素轉換爲透明像素時,會遇到這種結果:由於原本不同的對象會合併爲一個像素表示,因此您不能再根據需要區分它們。

您應該採取不同的方法並使用不同的工具來提取圖像:使用pdfimages(以上用於與-list參數從PDF的頁面上顯示的圖像性能工具)。正如你所看到的,有圖像列表:一種是RGB光柵圖像,另一個是灰度光柵圖像,被戲稱爲類型smask(softmask)。

這裏是一個命令來提取兩個圖像作爲PNG:

pdfimages -png dice.pdf dice-images 

這將提取兩個:

  1. dice-images-0000.png(彩色圖像)
  2. dice-images-0001.png(灰度圖像)

注意:只有Poppler版本pdfimages的最新版本才能讓您將圖像解壓縮爲PNG。在PDF中沒有PNG這樣的東西。只有柵格數據,用不同的方法壓縮。舊版本只能將圖像提取爲PPM或PNM。這對我在下面描述的內容沒有任何影響。即使你提取PPM/PNM圖片,這兩個文件仍然可以如下所述處理...)

下面是兩者的並排側,​​按比例縮小的蒙太奇:

Color image from PDF (left) with associated soft-mask (right)

正如你所看到的,圖像本身沒有透明背景,而是一個白色背景。 (它不具有Alpha通道)內PDF格式,這兩個圖像結合使用,以創建透明區域:

  1. 什麼出現在softmask完全黑(右)表示:真正的這個像素圖像(左)意味着完全透明。
  2. 什麼看起來完全白色的軟掩模(右)意味着:這個像素的真實圖像(左)是完全不透明的。
  3. 在軟掩模中出現的灰色陰影(右)意味着:實像(左)的這個像素意味着部分透明(與其灰度/黑色級別一致)。

要結合這兩個文件(彩色圖像和灰度softmask)回一個PNG透明,你可以使用ImageMagick的現在......

+0

「要合併這兩個文件(彩色圖像和灰度軟掩模)恢復爲一個透明的PNG,現在可以使用ImageMagick ......「 - ImageMagick命令是做什麼的?即轉換 - ??? – evandrix 2015-12-14 14:43:33

1

庫爾特已經介紹的很詳細了整個事情。因此,這裏僅僅是如何運行它之後通過pdfimages -png

pdfimages -png my.pdf my 

這resluts在兩個文件中

identify my-0*png 
    my-000.png PNG 360x310 360x310+0+0 8-bit sRGB 256c 3.3KB 0.000u 0:00.000 
    my-001.png PNG 360x310 360x310+0+0 8-bit sRGB 256c 9.44KB 0.000u 0:00.000 

my-001.png是圖像中pdfimages -list標記smask組裝與ImageMagick的圖像。爲了重新組裝圖像返回到它的原始形式使用-compose CopyOpacity與ImageMagick的命令composite

composite -compose CopyOpacity my-001.png my-000.png my-reassembled.png 

http://www.imagemagick.org/Usage/masking/#masks更多信息見。