我使用ImageMagick的轉換那樣的PDF文件轉換成PNG巴布亞新幾內亞:ImageMagick的PDF轉換爲固定寬度或高度
convert -density 150 file.pdf -quality 100 res.png
的問題是,根據該文件的結果圖片的大小而不同內容。我怎樣才能選擇一個特定的最大高度和最大寬度像素的結果圖片?
我使用ImageMagick的轉換那樣的PDF文件轉換成PNG巴布亞新幾內亞:ImageMagick的PDF轉換爲固定寬度或高度
convert -density 150 file.pdf -quality 100 res.png
的問題是,根據該文件的結果圖片的大小而不同內容。我怎樣才能選擇一個特定的最大高度和最大寬度像素的結果圖片?
更新回答
從您的意見,我想我更好地瞭解你現在想要什麼。所以,我認爲你需要的身份是這樣的:
Required Resolution Required Height
------------------- = ---------------
Current Resolution Current Height
但請記住,適用於X方向和Y方向。因此,讓我們讓ImageMagick計算出您需要的x分辨率和y分辨率以獲得您想要的輸出大小 - 使用ImageMagick的fx
方法更容易,因爲它適用於Windows和Linux,而且我碰巧知道您有已經安裝了ImageMagick的,而您可能沒有bc
或任何在Windows上做數學:
#!/bin/bash
# New width and new height that you want
nh=1000
nw=500
# Calculate Resolution needed in Height
rh=$(identify -format "%[fx:int(($nh*resolution.y)/h)]" doc.pdf)
echo $rh
# Calculate Resolution needed in Width
rw=$(identify -format "%[fx:int(($nw*resolution.x)/w)]" doc.pdf)
echo $rw
所以,如果我用一個文件名爲doc.pdf
測量595x842,它輸出85和60的X和Y密度。如果我再使用
convert -density 85 doc.pdf a.jpg
它在702x994出來 - 這是接近1000的高度,我想
,如果我用
convert -density 60 doc.pdf a.jpg
它在496x702這是出來接近我想要的500的寬度。
在前面,你可以使用:
identify -format "%[fx:int(($nh*resolution.y)/h)]" doc.pdf
,而不是把結果賦值給一個變量,像我一樣 - 我只是這樣做,因爲我通常以後要使用的變量。
原來的答案
就在裏面添加-resize WIDTHxHEIGHT
轉換後設置你想要的大小。因此,在具體而言,如果你想讓它不超過1500x2000以上,同時保留原始寬高比,這樣做:
convert -density 150 file.pdf -quality 100 -resize 1500x2000 res.png
如果你想讓它不超過800像素寬,不關心的高度,做:
convert -density 150 file.pdf -quality 100 -resize 800x res.png
如果你想讓它不超過1000像素高,並且不關心的寬度,這樣做:
convert -density 150 file.pdf -quality 100 -resize x1000 res.png
如果你喜歡「鏡廳」的效果,想要它1200x1800來得及什麼,並與長寬比,做:
convert -density 150 file.pdf -quality 100 -resize 1200x1800! res.png
非常感謝。我試圖讓事情變得更快,並以您的方式將它轉換爲大文件,然後調整大小,這可能需要很長時間。例如,600的大小和100x100的大小調整將需要很長時間,直到大圖像準備好,然後調整大小,相反,首先創建大小合適的圖像。 – amitdar
對不起,我把你的問題解釋爲你知道你想使用'-density 150'(因爲那是你編碼的),然後你想調整你的圖像大小 - 而不是你想通過只使用最小密度......如果您在文件上使用ImageMagick命令「identify -verbose someFile.pdf」,它們是否都具有相同的分辨率?它是72x72嗎?因爲輸出文件的大小直接與密度成比例變化。 –
我已經更新了我的答案 - 請再看一次。另外,如果性能對您來說是一個大問題,並且您需要轉換大量PDF文件,請考慮使用'GNU Parallel',如果您使用的是像Linux或OSX這樣的體面操作系統。 –