Imagick 支持径向渐变吗?
问题
当使用 Imagick::newPseudoImage 创建径向渐变时,Apache HTTP 错误日志中出现此错误,并且未创建径向渐变:
PHP 致命错误:未捕获的异常 带有消息的“ImagickException” '无法创建新的伪图像: 径向渐变:#FF0000-#FFFFFF' in /var/www/html/energy/scripts/rg.php:6\n堆栈 跟踪:\n#0 /var/www/html/energy/scripts/rg.php(6): Imagick->新的伪图像(150,150, '径向渐变...')\n#1 {main}\n 扔进去 /var/www/html/energy/scripts/rg.php 上 第 6 行
研究
缺少 Imagick::newPseudoImage 的 PHP 文档,但根据 链接文本 (搜索“径向”):
RADIAL_GRADIENT...渐变径向 从一种色调过渡到 another...返回渲染的径向 使用指定的渐变图像 图像尺寸。指定所需的 底纹作为文件名的一部分(例如 径向渐变:红蓝或 径向渐变:#F00-#00F)。
我尝试过使用“RADIAL_GRADIENT”而不是“radial-gradient”以及我能想到的所有其他组合。最终,我想提供 Imagick::newPseudoImage RGB 值而不是十六进制并将创建的图像保存到磁盘。
我的 PHP 脚本
// 创建一个新的 imagick 对象。
$image = new Imagick();
// 一个新图像,具有从红色到白色的径向渐变渐变,150 x 150 像素。 $image->newPseudoImage(150,150,'径向渐变:#FF0000-#FFFFFF');
// 设置图像格式为PNG。
$image->setImageFormat('png');
// 输出图像。
header("内容类型:image/png");
回显$图像;
我的环境
imagick 3.0.1RC1
ImageMagick 6.2.8.0
PHP 5.2.14
RedHat Enterprise Linux 5.5
谢谢:-)
PROBLEM
When using Imagick::newPseudoImage to create a radial gradient, this error appears in the Apache HTTP error log and the radial gradient is not created:
PHP Fatal error: Uncaught exception
'ImagickException' with message
'Unable to create new pseudo image:
radial-gradient:#FF0000-#FFFFFF' in
/var/www/html/energy/scripts/rg.php:6\nStack
trace:\n#0
/var/www/html/energy/scripts/rg.php(6):
Imagick->newpseudoimage(150,150,
'radial-gradient...')\n#1 {main}\n
thrown in
/var/www/html/energy/scripts/rg.php on
line 6
RESEARCH
The PHP documentation for Imagick::newPseudoImage is lacking but according to link text (search for "radial"):
RADIAL_GRADIENT...Gradual radial
passing from one shade to
another...Returns a rendered radial
gradient image using the specified
image size. Specify the desired
shading as part of the filename (e.g.
radial-gradient:red-blue or
radial-gradient:#F00-#00F).
I've tried using "RADIAL_GRADIENT" instead of "radial-gradient" and every other combination I could think of. Utimately, I would like to feed Imagick::newPseudoImage RGB values instead of hex and save the created images to disk.
My PHP script
// Create a new imagick object.
$image = new Imagick();
// A new image with radial gradient fading from red to white, 150 by 150 pixels.
$image->newPseudoImage(150,150,'radial-gradient:#FF0000-#FFFFFF');
// Set the image format to PNG.
$image->setImageFormat('png');
// Output the image.
header("Content-Type: image/png");
echo $image;
My Environment
imagick 3.0.1RC1
ImageMagick 6.2.8.0
PHP 5.2.14
RedHat Enterprise Linux 5.5
Thank you :-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在使用 ImageMagick 6.2.8;最新的是6.6.3。这两个版本之间有很多增强功能。您引用的文档页面描述了最新版本(据我所知)。
他们的下载页面提供了在 CentOS 5.4 上安装最新版本的 RPM(与 RedHat Enterprise Linux 5.4 基本相同)。这些可能也适用于 5.5 - 尝试一下:)
(我对 PHP 绑定不太了解,所以恐怕无法帮助您:)
You are using ImageMagick 6.2.8; the latest is 6.6.3. There have been a lot of enhancements between those two versions. The documentation page you reference describes the latest version (as far as I know).
Their download page has RPMs for installing the latest version on CentOS 5.4 (which is essentially identical to RedHat Enterprise Linux 5.4). These may well work on 5.5 as well - give them a try :)
(I don't know much about the PHP bindings, so can't help you with that I'm afraid :)