【问题标题】:After rotate a image, change background旋转图像后,更改背景
【发布时间】:2014-06-18 07:36:49
【问题描述】:

它只在php中完成,旋转原始图像后,图像背景为黑色。如何消除背景?

下面是我的代码..

      $imgNames  = "upload/".$_SESSION["img"];
      $sourcea=imagecreatefromjpeg($imgNames);
      $rotatea=imagerotate($sourcea, 0,0); 
      $uniqids = uniqid();
      $rotImages = "upload/".$uniqids.".jpg";
      $uni=uniqid();
      imagejpeg($rotatea,$rotImages,$q=25);
      echo "Rotated Image: <img src='$rotImages' >";

【问题讨论】:

  • 由于是源图像包含黑色背景,您需要更改您的旋转代码。如果你想要一个透明的背景,你不能用.jpg,因为它不能是透明的。

标签: php css


【解决方案1】:

只需使用 css。因为你也标记了它。

.rotated{
transform:rotate(45deg); 
-ms-transform:rotate(45deg); 
-webkit-transform:rotate(45deg);
/*Or whatever deg you want*/
}

将该类添加到图像标签中。

【讨论】:

    【解决方案2】:

    首先:*.jpg 不支持透明度。 使用 *.png 图片格式。

    第二:检查这个: How do i get a transparent background after rotaing a png image with php?

    【讨论】:

      【解决方案3】:
      Add following code 
      
      
      
          $imgNames  = "upload/".$_SESSION["img"];
            $sourcea=imagecreatefromjpeg($imgNames);
          $transColor = imagecolorallocatealpha($imgNames, 255, 255, 255, 127);
               $rotatea=imagerotate($sourcea, 0,$transColor); 
              imagesavealpha($rotateae, true);
           $uniqids = uniqid();
            $rotImages = "upload/".$uniqids.".png";
            $uni=uniqid();
            imagejpeg($rotatea,$rotImages,$q=25);
            echo "Rotated Image: <img src='$rotImages' >";
      

      【讨论】:

      • 变量$destimg是什么意思?
      • 现在试试.. $imgNames is $destimg
      • 我认为必须使用 $sourcea 而不是 $imgNames。它有效,但另一个疑问是必须更改透明背景。怎么办?
      • php.net//manual/en/function.imagesavealpha.php imagesavealpha 将管理透明度。