Я пытаюсь добавить круглые углы в файл jpeg, но проблема в том, что после добавления раундов, я получаю черный цвет фона. Как-то я не могу изменить его на любой другой цвет (белый, прозрачный, красный). Он просто показывает черный фон, где изображение имеет закругленные углы.
Код, который я использую:
<?php $image = new Imagick('example.jpg'); $image->setBackgroundColor("red"); $image->setImageFormat("jpg"); $image->roundCorners(575,575); $image->writeImage("rounded.jpg"); header('Content-type: image/jpeg'); echo $image; ?>
Я не могу использовать png, поскольку файлы jpeg огромны, около 5 МБ, поэтому, если бы я использовал png, размер файла увеличился бы до 26 МБ, даже если png добавит прозрачные круглые углы.
Также версия IMagick, которую я использую:
ImageMagick 6.6.2-10 2010-06-29 Q16 http://www.imagemagick.org
Также выводятся результаты (сгенерированные изображения), поэтому я не знаю, будет ли css работать здесь.
Извините, я пытаюсь создать новый файл jpeg с закругленными углами из уже существующего файла jpeg, который не имеет круглых углов, это на самом деле фотография, сделанная с камеры, поэтому есть несколько / слишком много цветов, поэтому я могу " t используйте gif.
Также мой сайт будет только генерировать круглое изображение угла, после чего он будет загружен с помощью FTP-программы администратором сайта, а затем с помощью системного программного обеспечения будет напечатан, поэтому, короче, мой сайт не будет печатать изображение, а скорее просто сгенерируйте его
Попробуй это:
<?php $input = 'example.jpg'; $size = getimagesize($input); $background = new Imagick(); $background->newImage($size[0], $size[1], new ImagickPixel('red')); $image = new Imagick($input); $image->setImageFormat("png"); $image->roundCorners(575,575); $image->compositeImage($background, imagick::COMPOSITE_DSTATOP, 0, 0); $image->writeImage("rounded.jpg"); ?>
Я могу получить downvoted, но я говорю, пусть css разобраться с углами и снять нагрузку с вашего сервера 🙂
CSS закругленные углы.
JPG не имеет прозрачного цвета (альфа-каналов) в своей палитре.
Выходное изображение должно использовать PNG или GIF (или другой формат изображения, поддерживающий альфа-каналы).
setImageBackgroundColor – это еще один вариант, если вам нужен непрозрачный фон.
РЕДАКТИРОВАТЬ
Ваш комментарий напоминает мне, что вы можете попробовать использовать командную строку; shell_exec()
будет запускать аргумент командной строки из PHP. Команда в API ImageMagick, с которой вам нужно начать, – это convert example.jpg
, а затем вы можете передавать флаги с различными параметрами, которые вы хотите.
Поскольку ImageMagick уже установлен, он будет работать сразу. Вам может потребоваться указать вашу систему PATH
в каталог ImageMagick, где находятся все исполняемые файлы.
Есть много вопросов и форумов, посвященных закругленным углам с помощью этого метода, поэтому я оставлю это до вас.
Вот полезный совет, хотя – есть глупая путаница с командой convert
, так как Windows также имеет convert.exe
который редко используется, но будет путать вашу командную строку, поэтому убедитесь, что вы вызываете правильный convert
. 😉 Чтобы проверить, работает ли он, попробуйте convert example.jpg example.gif
(который должен преобразовать ваш пример в gif).
Чтобы получить выход из командной строки, завершите все команды с помощью 2>&1
которая выведет cmd
выход обратно в PHP .