Добавьте круглые углы в файл jpeg

Я пытаюсь добавить круглые углы в файл 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 .