如何在保持透明度的同时在GD图像库中旋转图像?

时间:2010-11-04 17:05:10

标签: php transparency gd rotation retain

我正在为我的网站制作皮肤预览器;我需要旋转部分图像以创建此图像的表示,供我的用户查看。

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

我需要能够旋转此图像,同时保持图像内部的任何透明度透明,同时还具有扩展边框(您知道,图像在旋转之前不是图像的一部分)是透明的。

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

任何帮助?

3 个答案:

答案 0 :(得分:2)

  1. 剪下要旋转的图像
  2. 使用类似http://www.exorithm.com/algorithm/view/rotate_image_alpha
  3. 之类的内容旋转保留alpha
  4. 使用以下内容合并保留alpha:
  5. -

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我用它来旋转PNG并保留透明度颜色。奇迹般有效。它是基本的GD"。

class TopicsController < ApplicationController
  def index
    @topics = Topic.all
    authorize @topics
  end

  def new
    @topic = Topic.new
    authorize @topic
  end

  def show
    @topic = Topic.find(params[:id])
    @posts = @topic.posts
    authorize @topic
  end

  def create
    @topic = Topic.new(topic_params)
    authorize @topic
    if @topic.save
      redirect_to @topic, notice: "Topic was saved successfully."
    else
      flash[:error] = "Error creating topic.  Please try again."
      render :new
    end
  end

  def edit
    @topic = Topic.find(params[:id])
    authorize @topic
  end

  def update
    @topic = Topic.find(params[:id])
    authorize @topic
    if @topic.update_attributes(topic_params)
      redirect_to @topic, notice: "Topic was updated successfully."
    else
      flash[:error] = "Error saving topic.  Please try again."
      render :edit
    end
  end

  private

  def topic_params
    params.require(:topic).permit(:name, :description, :public)
  end
end

不知道你是否正在寻找什么?