ffmpeg — Как я могу изменить размер изображения, а затем централизовать его на белом фоне? Можно ли это сделать с помощью библиотеки php-Imagine?

Эффект, который я хотел бы создать, точно такой же, как в примере
этот поток StackOverflow: (Связанный вопрос)

1. изменить размер изображения
2. держать пропорции
3. Добавить или заполнить области без изображения белым фоном

Вот три примера этого процесса ниже:
1. Если оригинал квадратный, независимо от размера 640 * 640 или 1024 * 1024, просто измените его размер до целевого размера, например 480 * 480 будет работать.
введите описание изображения здесь

  1. Если исходный вход является вертикальным прямоугольным, выход не должен быть обрезан
    и по-прежнему быть по центру, как показано ниже (красный маркер края черточки облегчает просмотр белого фона, и пропорция сохраняется после изменения размера изображения до 480 * 480 пикселей)
    введите описание изображения здесь

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

Итак, после того как я прояснил такой вопрос,
Я бы хотел знать:

  1. Существует ли общее название такого изменения размера пользовательского изображения, упомянутое выше?
  2. хотел бы узнать, как добиться этого с помощью библиотеки изображений php Imagine?
    выполнимо ли это с помощью php-представить или нужно переключиться на другую библиотеку, например ImageMagick?

Постскриптум Если вы хотите добиться эффекта либо в изображение изменения размера или же изменение размера видео, Вы можете использовать ниже FFMPEG однострочную команду.
(благодаря @Mulvya, да, приведенный ниже код применим как к видео, так и к форматам изображений)

[запустите ниже встроенный код в консоли ffmpeg для достижения упомянутого эффекта изменения размера]

[изменить размер видео]

ffmpeg -i "[raw video url or videofile location.mp4]"  -vf "scale=iw*min(480/iw\,480/ih):ih*min(480/iw\,480/ih),pad=480:480:(480-iw)/2:(480-ih)/2:color=white" [save_path_and_filename].mp4
[изменить размер изображения]

ffmpeg -i "[raw image url or imagefile location.jpg]"  -vf "scale=iw*min(480/iw\,480/ih):ih*min(480/iw\,480/ih),pad=480:480:(480-iw)/2:(480-ih)/2:color=white" [save_path_and_filename].jpg

2

Решение

Извините, у меня нет полного ответа для вас, и это слишком долго для комментария, но это может быть сделано изначально, используя некоторые математические и php’s http://php.net/manual/en/ref.image.php

Проверьте в области imagecopyresize () imageecreate () imagescale и так далее. Это довольно сложная библиотека, так что вам придется сделать несколько попыток и ошибок, чтобы добраться туда, куда вы хотите.

Из опыта вы можете:

  • создать пустое изображение, imagecreatetruecolor ()
  • изменить цвет фона на белый
  • возьмите эскиз изображения и вставьте его в новое созданное изображение с помощью imagecopyresample () imagecopyresize ()
  • экспортировать это изображение и GIF, PNG, JPG. imagepng (), imagejpg ().
  • Добавить водный знак
  • и многое другое.

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

Вдобавок к этому, если вы знаете ffmpeg, вы можете сделать так, чтобы они работали вместе и делали потрясающие медиафайлы. Привет тебе

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]