我正在使用ImageMagick的转换将PDF文件转换为PNG:
app:showAsAction="collapseActionView"
问题是结果图片的大小根据文件内容而不同。如何为结果图片选择特定的最大高度和最大宽度(以像素为单位)?
答案 0 :(得分:4)
更新了答案
从你的评论中,我想我现在更清楚你想要什么。所以,我认为你需要的身份是:
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 - 接近我想要的高度
如果我使用
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
如果你想要的宽度不超过800px,并且不在乎高度,请执行以下操作:
convert -density 150 file.pdf -quality 100 -resize 800x res.png
如果您希望它不超过1000像素高,并且不关心宽度,请执行以下操作:
convert -density 150 file.pdf -quality 100 -resize x1000 res.png
如果您喜欢" Hall of Mirrors" 效果,并希望1200x1800可能出现,并且要考虑宽高比,请执行以下操作:
convert -density 150 file.pdf -quality 100 -resize 1200x1800! res.png