为了账号安全,请及时绑定邮箱和手机立即绑定

如何在PHP中以透明方式调整png的大小?

如何在PHP中以透明方式调整png的大小?

PHP
繁花如伊 2019-10-10 16:47:23
我正在尝试使用PHP中的透明背景调整png的大小,而我在网上发现的代码示例对我不起作用。这是我使用的代码,建议将不胜感激!$this->image = imagecreatefrompng($filename);imagesavealpha($this->image, true);$newImage = imagecreatetruecolor($width, $height);// Make a new transparent image and turn off alpha blending to keep the alpha channel$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);imagecolortransparent($newImage, $background);imagealphablending($newImage, false);imagesavealpha($newImage, true);imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height,  $this->getWidth(), $this->getHeight());$this->image = $newImage;  imagepng($this->image,$filename);更新 “不起作用”是指我调整png大小时背景颜色变为黑色。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

旧线程,但以防万一-如果正确命名,Dycey的示例应该可以工作。这是我的图像大小调整类中使用的修改版本。注意检查以确保定义了imagecolorallocatealpha(),如果使用的是GD <2.0.8,则不会。


  /**

     * usually when people use PNGs, it's because they need alpha channel 

     * support (that means transparency kids). So here we jump through some 

     * hoops to create a big transparent rectangle which the resampled image 

     * will be copied on top of. This will prevent GD from using its default 

     * background, which is black, and almost never correct. Why GD doesn't do 

     * this automatically, is a good question.

     *

     * @param $w int width of target image

     * @param $h int height of target image

     * @return void

     * @private

     */

    function _preallocate_transparency($w, $h) {

        if (!empty($this->filetype) && !empty($this->new_img) && $this->filetype == 'image/png')) {

            if (function_exists('imagecolorallocatealpha')) {

                imagealphablending($this->new_img, false);

                imagesavealpha($this->new_img, true);

                $transparent = imagecolorallocatealpha($this->new_img, 255, 255, 255, 127);

                imagefilledrectangle($this->new_img, 0, 0, $tw, $th, $transparent);

            }

        }

    }


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 548 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信