簡體   English   中英

ImageMagick將pdf轉換為具有固定寬度或高度的png

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM