PHP图片加水印、压缩图片

本文介绍了一个PHP类,用于实现图片的多种处理功能,包括添加文字和图片水印、图片压缩等。通过实例化该类并调用相应的方法,可以轻松地在图片上添加水印或进行压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做个笔记

<?php

/**
 * 该类用于给图片加文字水印,图片水印,压缩图片
 */
class Image
{
    private $image;

    private $info;

    //将图片保存到缓存中
    //构造函数
    public function __construct($src)
    {
        //获取图片信息
        $info = getimagesize($src);
        $this->info = array(
            'width' => $info[0],
            'height' => $info[1],
            'type' => image_type_to_extension($info[2], false),
            'mime' => $info['mime']
        );
        //在内存中创建一个和我们图像类型一样的图像
        $fun = "imagecreatefrom{$this->info['type']}";
        //把图片复制到我们的内存中
        $this->image = $fun($src);
    }

    //析构函数
    public function __destruct()
    {
        imagedestroy($this->image);
    }

    //图片加图片水印
    public function watermark($source, $local, $alpha)
    {
        //获取水印图片的基本信息
        $info2 = getimagesize($source);
        $type2 = image_type_to_extension($info2[2], false);
        $fun2 = "imagecreatefrom{$type2}";
        $water = $fun2($source);
        //合并图片
        imagecopymerge($this->image, $water, $local['x'], $local['y'], 0, 0, $info2[0], $info2[1], $alpha);
        //销毁水印图片
        imagedestroy($water);
    }

    //给图片加文字水印
    public function fontmark($content, $font_url, $size, $color, $local, $angle)
    {
        //设置字体的颜色,透明度
        $col = imagecolorallocatealpha($this->image, $color[0], $color[1], $color[2], $color[3]);
        //写入文本
        imagettftext($this->image, $size, $angle, $local['x'], $local['y'], $col, $font_url, $content);
    }

    //压缩图片
    public function thumb($width, $height)
    {
        $image_thumb = imagecreatetruecolor($width, $height);
        //将原图复制到新建的真色彩图片上,并按照一定比例压缩
        imagecopyresampled($image_thumb, $this->image,
            0, 0, 0, 0,
            300, 300, $this->info['width'], $this->info['height']);
        imagedestroy($this->image);
        $this->image = $image_thumb;
    }

    //输出图片
    public function outPut()
    {
        header("Content-type:" . $this->info['mime']);
        $funs = "image{$this->info['type']}";
        $funs($this->image);
    }

    //保存图片
    public function save($name)
    {
        $funs = "image{$this->info['type']}";
        $funs($this->image, $name . '.' . $this->info['type']);
    }
}

?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值