有关 方形填充或裁剪 的部分描述了一种方法来生成一个正方形的图像 - 对于其尺寸未知的文件,并用颜色填充背景。
我如何执行相同的操作,但创建一个透明背景。
有关 方形填充或裁剪 的部分描述了一种方法来生成一个正方形的图像 - 对于其尺寸未知的文件,并用颜色填充背景。
我如何执行相同的操作,但创建一个透明背景。
首先,让我们制作一张300x200的红色非正方形图片:
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
最后,检查一下是否已经生效:
identify result.png
result.png PNG 400x400 400x400+0+0 8-bit sRGB 418B 0.000u 0:00.000
convert -background none -gravity center image.png -resize 400x400 -extent 400x400 result.png
,它可以在不考虑输入大小的情况下工作。 - Mark Setchell 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
#!/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