如何在 php 中保留图像裁剪时的透明颜色?(仅保存在 jpg 文件中)

Posted

技术标签:

【中文标题】如何在 php 中保留图像裁剪时的透明颜色?(仅保存在 jpg 文件中)【英文标题】:How to preserve transparent colors on image cropping in php?(Saving only in jpg files) 【发布时间】:2011-08-07 16:37:52 【问题描述】:

当用户裁剪图像时,我试图将源图像的透明颜色保留到目标图像。我认为只有当图像是 gif 或 png 类型时,才会出现黑色而不是透明色。我做错了什么?

我也只想把图片保存为jpg格式

public function crop2ThumbNail($top, $left, $height, $width)

    $this->imageResized = imagecreatetruecolor(100, 100);
    $type = strtolower(substr(strrchr($this->image,"."),1));
    if($type == "gif" or $type == "png")
        imagecolortransparent($this->imageResized,imagecolorallocatealpha($this->imageResized, 0, 0, 0, 127));
        imagealphablending($this->imageResized, false);
        imagesavealpha($this->imageResized, true);
    
    imagecopyresampled($this->imageResized, $this->image , 0, 0, $left, $top, 100, 100 , $width, $height);

public function saveImage($savePath, $imageQuality="75")
    if (imagetypes() & IMG_JPG)
         imagejpeg($this->imageResized, $savePath, $imageQuality);
    else
             //Alert wrong format
    

【问题讨论】:

【参考方案1】:

php GD create a transparent png image

如果您搜索,您可能会找到更多。

遗憾的是,这并不像您期望的那样简单或直接。

【讨论】:

以上是关于如何在 php 中保留图像裁剪时的透明颜色?(仅保存在 jpg 文件中)的主要内容,如果未能解决你的问题,请参考以下文章

使用php从边框中删除透明区域(裁剪透明)

显示时使图像边缘透明

如何使用 C# 中的代码进行颜色提取?

C# 使用 Emgu 按像素颜色裁剪图像

如何裁剪仅在透明区域显示的图像?

Imagemagick 将透明图像裁剪为蒙版