3

我正在尝试向 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 MB,所以如果我使用 png,文件大小将达到 26 MB,即使 png 添加了透明圆角。

我使用的 IMagick 版本也是:

ImageMagick 6.6.2-10 2010-06-29 Q16 http://www.imagemagick.org 

输出(生成的图像)​​也将被打印,所以我不知道 css 是否可以在这里工作。

抱歉,我正在尝试从已经存在的没有圆角的 jpeg 文件创建一个带有圆角的新 jpeg 文件,这实际上是从相机拍摄的照片,所以颜色有多种/太多,所以我可以'也不要使用 gif。

此外,我的网站只会生成圆角图像,然后由网站管理员使用 FTP 程序下载,然后使用系统软件打印,所以简而言之,我的网站不会打印图像,而是只生成它

4

3 回答 3

2

Try this:

<?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");
?>
于 2012-11-27T21:58:55.480 回答
2

我可能会被否决,但我说让 css 处理角落并减轻你的服务器的一些负载:)

CSS 圆角。

于 2012-11-27T07:32:03.240 回答
2

JPG 在其调色板中没有透明颜色(Alpha 通道)。

输出图像必须使用 PNG 或 GIF(或其他支持 Alpha 通道的图像格式)。

如果您想要不透明的背景,setImageBackgroundColor是另一种选择。


编辑

您的评论提醒我您可以尝试使用命令行;shell_exec()将从 PHP 运行命令行参数。您需要从 ImageMagick API 中的命令开始convert example.jpg,然后您可以使用所需的各种参数传递标志。

由于 ImageMagick 已经安装,它会立即工作。您可能需要将系统指向PATH所有可执行文件所在的 ImageMagick 目录。

有很多问题和论坛专门针对这种方法的圆角,所以我将把它留给你。

不过这里有一个有用的提示 - 该命令有一个愚蠢的混淆convert,因为 Windows 也有一个convert.exe很少使用的,但会混淆你的命令行,所以确保你调用正确的convert. ;) 要测试它是否正常工作,请尝试convert example.jpg example.gif(这应该将您的示例转换为 gif)。

要从命令行获取输出,请完成所有2>&1cmd 输出返回 PHP的命令。

于 2012-11-27T07:38:27.590 回答