2010-11-04 21 views
1

我正在为我的网站制作皮肤预览器;我需要旋转图像的一部分来为我的用户创建一个表示。如何在保持透明度的同时在GD图像库中旋转图像?

皮肤是一个PNG文件,并且它的所有部分可能具有透明度,甚至根本没有。

我需要能够同时保持图像透明内部的任何透明度,旋转这一形象,同时还具有扩展边界(你知道,这是不是图像的一部分,它被旋转之前的区域)是透明的。

我所有的尝试都留下了图像本身周围的黑色边框。

任何帮助?

+0

你旋转图像的方形或矩形部分?你会旋转90,180,270还是任意度数? – 2010-11-04 17:48:34

+0

任意。矩形和正方形。 – 2010-11-04 18:44:46

回答

2
  1. 切出一块,你要旋转
  2. 旋转使用这样http://www.exorithm.com/algorithm/view/rotate_image_alpha
  3. 合并的东西回来,使用维护阿尔法保留阿尔法下面的图像:

-

imagesetbrush($destimg, $srcimg); 
// x, y are the center of target paste location 
imageline($destimg, $x, $y, $x, $y, IMG_COLOR_BRUSHED); 
0

您可能要检查here为libpng的某些用途(这将需要zlib)。如果你在linux上,你可以在perl中写一些东西。 CPAN GD模块可能是您的门票。

+0

我拥有的GD的安装无法更改。我坚持我拥有的东西。 – 2010-11-04 17:27:38

0

我用它来旋转PNG和维护透明的颜色。奇迹般有效。这是“基本的GD”。

$rotation = 135; 
$handle_rotated = imagerotate($handle_not_rotated,$rotation,0); 
imagealphablending($handle_rotated, true); 
imagesavealpha($handle_rotated, true); 

不知道它是你在找什么?

相关问题