[英]ImageMagick convert pdf to png with fixed width or height
我正在使用ImageMagick的convert將PDF文件轉換為PNG:
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已經安裝,而Windows上可能沒有bc
或任何東西可以進行數學計算:
#!/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
因此,如果我在尺寸為595x842的名為doc.pdf
的文件上使用該文件,則輸出的x和y密度分別為85和60。 如果我再用
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
如果您希望它的高度不超過1000px,並且不關心寬度,請執行以下操作:
convert -density 150 file.pdf -quality 100 -resize x1000 res.png
如果您喜歡“鏡廳”效果,並希望它達到1200x1800,那么可以采用寬高比,請執行以下操作:
convert -density 150 file.pdf -quality 100 -resize 1200x1800! res.png
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.