旋转图像时没有获得透明背景

时间:2014-05-02 06:16:48

标签: php image image-processing imagemagick image-rotation

我想将带有透明背景填充的图像旋转到未覆盖的区域。

我使用语法

审阅了this官方文档
// Rotate
$rotate = imagerotate($source, $degrees, 0);

但未获得成功。

旋转后,我将获得带有黑色填充图像到未覆盖区域的图像。如下所示

enter image description here

原始图片为here

我也试过下面的命令

$> convert -rotate 5 image.png image_rotated.png

参考是this

以上命令我用过png和jpg图像,但我没有结果......

现在我不知道事情出了什么问题?我正在使用的库的版本有什么问题吗?

我的php版本是PHP 5.4.9-4ubuntu2.4

提前致谢。

2 个答案:

答案 0 :(得分:1)

以下命令适用于我Debian wheezy 7.5 mageMagick 6.7.7-10

convert -background "rgba(0,0,0,0)" -rotate 5 images.jpg new.png

指定-background "rgba(0,0,0,0)"它将为输出图像设置透明背景填充。另外,请确保以.png格式(支持透明度)保存输出图像

希望它会有所帮助。 :)

注意:默认情况下,-rotate选项使用黑色颜色填充背景。

修改

确保正确安装imagemagick包。

检查版本详情:

$convert --version
Version: ImageMagick 6.7.7-10 2014-03-08 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP 

如果您没有获得类似的输出,请尝试检查软件包的安装。

$sudo dpkg --get-selection | grep imagemagick

如果在上述命令的输出中状态为deinstalled,您可能希望安装它。

$sudo apt-get install imagemagick

答案 1 :(得分:0)

因为您使用的是php,我假设您接受css代码作为答案?将这些css添加到您的图片中它会倾斜

/* Firefox */
-moz-transform:rotate(45deg);
/* Safari and Chrome */
-webkit-transform:rotate(45deg);
/* Opera */
-o-transform:rotate(45deg);
/* IE9 */
-ms-transform:rotate(45deg);

编辑: 所以不是css呵呵,试试这个

$source = imagerotate($source,$degree,0XFFFFFF00,0); //<-- FFFFFF00 = RRGGBBAA
//you might not need to disable blending, try if it's not working
//imagealphablending($source, false);
imagesavealpha($source, true);
//then user $source however you want