如何使用命令行的透明度对图像和打击垫进行平方(imagemagick)

时间:2015-07-30 01:04:27

标签: imagemagick

标题为Square Padding or Cropping的部分描述了一种生成方形图像的方法 - 对于尺寸未知的文件 - 并用背景填充背景。

如何执行相同的操作,但创建透明背景。

3 个答案:

答案 0 :(得分:5)

让我们先制作一个红色的正方形图像,即300x200:

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    rootfolder/site/templates/article.php

enter image description here

现在让我们把它做成方形图像,但使用黄色背景,这样你就可以看到它:

convert -size 300x200 xc:red image.png

enter image description here

现在我们可以再做同样的事情,但让背景透明:

convert -background yellow -gravity center image.png -resize 400x400 -extent 400x400 result.png

enter image description here

并且,只需检查以确保它有效:

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