标题为Square Padding or Cropping的部分描述了一种生成方形图像的方法 - 对于尺寸未知的文件 - 并用背景填充背景。
如何执行相同的操作,但创建透明背景。
答案 0 :(得分:5)
让我们先制作一个红色的正方形图像,即300x200:
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: rootfolder/site/templates/article.php
现在让我们把它做成方形图像,但使用黄色背景,这样你就可以看到它:
convert -size 300x200 xc:red image.png
现在我们可以再做同样的事情,但让背景透明:
convert -background yellow -gravity center image.png -resize 400x400 -extent 400x400 result.png
并且,只需检查以确保它有效:
convert -background none -gravity center image.png -resize 400x400 -extent 400x400 result.png
答案 1 :(得分:1)
最好使用纯imagemagick命令,但这是一个使用&#39;文件&#39; unix / linux命令用于提取文件的尺寸,然后可以在调整大小到最大尺寸的正方形时使用。
#!/usr/bin/env ruby
require 'shellwords'
def dims(image_escaped)
size_data = `file #{image_escaped}`
size_data[/, (\d+ x \d+),/, 1].split(' x ').map(&:to_i)
end
def square(image, pad_color='transparent')
image_esc = Shellwords.escape(image)
maxdim = dims(image_esc).max
geometry = "#{maxdim}x#{maxdim}"
# could use convert if don't want to clobber the image
system "mogrify -resize #{geometry} -background #{pad_color} -gravity center -extent #{geometry} -format png #{image_esc}"
end
ARGV.each do |image|
square(image)
end
答案 2 :(得分:1)
Anthony的例子中的这些修改过的方法对我都有用:
convert thumbnail.gif \
\( +clone -rotate 90 +clone -mosaic +level-colors grey -transparent grey \) \
+swap -gravity center -composite square_padded.gif
convert thumbnail.gif -virtual-pixel none -set option:distort:viewport \
"%[fx:max(w,h)]x%[fx:max(w,h)]-%[fx:max((h-w)/2,0)]-%[fx:max((w-h)/2,0)]" \
-filter point -distort SRT 0 +repage square_external.gif