ImageMagick искажает при увеличении виртуального холста

#imagemagick-convert #perspective

#imagemagick-преобразовать #перспектива

Вопрос:

Использование ImageMagick (преобразование) Я пытаюсь создать искажение изображения, в результате которого изображение будет больше оригинала, но содержит только подмножество оригинала.

синий - искажение, а красный - образец

Однако, когда я выполняю искажение с помощью ImageMagick, нижняя часть обрезается до размеров исходного изображения. Запрос, который я делаю, заключается в следующем:

 convert 
  -verbose 
   img-to-distort.png 
  -matte 
  -virtual-pixel transparent 
  -interpolate integer 
  -distort perspective '64,0 0,-4  128,0 24,8  128,96 24,112  64,96 0,128' 
   output.png
 

Размеры исходного изображения составляют 128 Вт x 96 Ч пикселей

Как я могу увеличить виртуальный холст, на котором происходит искажение перед сохранением? Использование distort бесполезно, потому что я теряю смещение и т. Д.

Комментарии:

1. Использовать -установить параметр: искажать: видовой экран WxH X Y. Посмотреть legacy.imagemagick.org/Usage/distorts/#distort_viewport .

2. Опубликуйте свое входное изображение, чтобы мы могли протестировать и предложить решение. Также определите, какого размера вы хотите получить результат.

3. Спасибо @fmw42. Я уже решил проблему для себя удовлетворительно, но у меня не было времени опубликовать здесь.

Ответ №1:

Итак, решением этой проблемы было -resize изображение до искажения. Поскольку искажение все равно изменяется, ухудшения изображения не происходит.

После искажения мы затем используем -extent , чтобы взять область изображения, которую мы хотим использовать.

 convert 
  -verbose 
  -resize 128x120 
   img-to-distort.png 
  -matte 
  -virtual-pixel transparent 
  -interpolate integer 
  -distort perspective '64,0 0,-4  128,0 24,8  128,96 24,112  64,96 0,128' 
  -extent 24x120 
   output.png
 

Это отлично работало для моих нужд.