<?php
namespace app\common\controller;
/**
* 图片处理工具
* Time: 10:58
*/
class ImageTool{
// imageInfo 分析图片的信息
// return array()
public static function imageInfo($image) {
// 判断图片是否存在
if (!file_exists($image)) {
return false;
}
$info = getimagesize($image);
if ($info == false) {
return false;
}
// 此时info分析出来,是一个数组
$img['width'] = $info[0];
$img['height'] = $info[1];
$img['ext'] = substr($info['mime'], strpos($info['mime'], '/') + 1);
return $img;
}
/*
加水印功能
parm String $dst 等操作图片
parm String $water 水印小图
parm String $save,不填则默认替换原始图
*/
public static function water($dst, $water, $save = NULL, $pos = 2, $alpha = 50) {
// 先保证2个图片存在
if (!file_exists($dst) || !file_exists($water)) {
return false;
}
// 首先保证水印不能比待操作图片还大
$dinfo = self::imageInfo($dst);
$winfo = self::imageInfo($water);
if ($winfo['height'] > $dinfo['height'] || $winfo['width'] > $dinfo['width']) {
return false;
}
// 两张图,读到画布上! 但是图片可能是png,可能是jpeg,用什么函数读?
$dfunc = 'imagecreatefrom' . $dinfo['ext'];
$wfunc = 'imagecreatefrom' . $winfo['ext'];
if (!function_exists($dfunc) || !function_exists($wfunc)) {
return false;
}
$dim = $dfunc($dst);
$wim = $wfunc($water);
//新方案,不能动态调控透明度
$image_bg = imagecreatetruecolor(imagesx($dim),imagesy($dim));
$color = imagecolorallocatealpha($image_bg, 255, 255, 255 ,127);
imagefill($image_bg, 0, 0, $color);
imagecolortransparent($image_bg, $color);
imagesavealpha($image_bg, true);
imageco
php图片加水印、图片加logo、保证图片不失真、图片缩放
最新推荐文章于 2022-06-24 17:17:54 发布
本文介绍了如何使用PHP进行图片处理,包括在图片上添加水印和logo,同时保证图片质量不降低。内容涵盖了图片无损缩放的算法和实践方法,帮助开发者实现高效且不失真的图片操作。
摘要由CSDN通过智能技术生成