【问题标题】:How to change the background black color to transparent?如何将背景黑色更改为透明?
【发布时间】:2011-02-12 13:10:02
【问题描述】:

我正在使用 Image Magick 旋转图像(因为 PHP-GD 会缩小图像)。

但它使背景变成黑色。另外,图像看起来一点也不好看(但比 PHP-GD 好)。

有什么建议吗?

@oren , @razzed 这是代码

$patchImageS = 'kapeels.png'; // 要在最终 bg 上修补的图像 $imagick = new imagick(); $imagick->readImage($patchImageS); $imagick->rotateImage(new ImagickPixel(), 355); $imagick->transparentPaintImage('black', 0.0,0,false); header('内容类型:图像/png'); $fp=fopen('tts.png','w+'); fwrite($fp,$imagick->getImage()); fclose($fp);

这就是我要旋转的图像 -

http://www.lilpirate.net/kapeels.png

感谢大家的回复:-)

【问题讨论】:

  • 一些示例代码、命令行或源图像 URL 怎么样?
  • @razzed - 问题已更新。看一看。 @ore​​n - 不

标签: php gd imagick


【解决方案1】:

创建 Imagick 对象后,在他的参数中设置背景透明:

$imagick->newimage($width, $height, "rgba(0, 0, 0, 0)");

【讨论】:

    【解决方案2】:

    像这样旋转图像:

    $im = new Imagick('kapeels.png'); 
    $im->rotateImage( new ImagickPixel('none'), 7 ); 
    $im->trimImage ( 0 ); 
    $im->resetImagePage( '216x174+0+0' ); 
    $im->writeImage('rotateImage.png');  
    $im->destroy(); 
    

    您需要重新页面以将图像重新居中在画布上,但我不知道为什么您需要值,因为 Imagemagick 不使用它们。我能想到的自动设置值的唯一方法是在修剪后获取图像大小并在重置时使用它。

    对于 quility,我只能建议从较大的图像开始,然后在旋转后缩小它,看看是否有帮助;也许使用一些锐化。但我认为这些线条太细而且靠得很近,所以不会有太大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2016-08-17
      相关资源
      最近更新 更多