<?php
header("content-type:text/html;charset=utf-8");
/**
.jpg .png .gif 经过测试
*/
class Image{
private $path;//待操作图片的路径
/**
/**
@备注 如果此方法 出现了报错 很有可能是图片本身的格式被篡改
*/
function suofang($width,$height,$name){
list($src_width,$src_height)=getimagesize($this->path);//获得原图片的高宽
if($width>$src_width$height>$src_height){
die ("输入错误,缩放后的宽度和高度不能大于图片本身的高度 和宽度");
}
$dst_image=imagecreatetruecolor($width, $height);//创建缩放后的画布资源
$path= "imagecreatefrom".$this->file_type($this->path);
$src_image=$path($this->path); //原图片资源
imagecopyresized($dst_image, $src_image, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
$path1="image".$this->file_type($this->path);//类似于imagejpeg();
$name=$name.basename($this->path);//组合新的文件名称
if($path1($dst_image,dirname($this->path)."/".$name)){
echo "图片缩放操作成功!";
}else{
echo "图片缩放操作失败!请检查源代码";
}
//关闭img图像资源
imagedestroy($dst_image);
imagedestroy($src_image);
}
/**
@param string $name 生成的带水印图片的名称
*/
function shuiyin_ImgOrText($mode,$content,$position,$name){
if($mode!=1&&$mode!=2){
die ("第一个参数必须为1 or 2");
}elseif($mode==1){
$path1="imagecreatefrom".$this->file_type($this->path);
$image=$path1($this->path);
$size=50;
//$content=iconv("GB2312", "UTF-8",$content); //调整编码问题为防止有中文出现会有乱码问题
$red=imagecolorallocate($image, 255, 0, 0);
if(!copy("C:\WINDOWS\Fonts\simsun.ttc", "./simsun.ttc")){ //将字体配置文件simsun.ttc复制到工作目录下
die("字体配置导入失败!");
}
$fontfile="simsun.ttc";
if($position<1$position>9){
die("第三个参数必须是1~9的数字");
}
$arr=array();
$arr=$this->position($position);
imagettftext($image, $size, 0, $arr[0], $arr[1], $red, $fontfile, $content);
$path="image".$this->file_type($this->path);
if($path($image,dirname($this->path)."/".$name.basename($this->path))){
echo "增加文字水印成功!";
}else{
echo "增加文字水印失败!";
}
imagedestroy($image);
}elseif($mode==2){ //增加图片水印
if(!file_exists($content)){
die ("没有查找到该文件");
}
$path1="imagecreatefrom".$this->file_type($this->path);
$image1=$path1($this->path); //源图片(待增加水印)
$path="imagecreatefrom".$this->file_type($content);
$image=$path($content);
$arr=array();
$arr=$this->position($position);
//自设参数
$src_x=200; //水印图从距(0,0)横坐标为200的地方开始截取
$src_y=200; //水印图从距(0,0)纵坐标为200的地方开始截取
$src_w=200; //截取水印图的宽度
$src_h=200; //截取水印的高度
imagecopy($image1, $image, $arr[0],$arr[1], $src_x, $src_y, $src_w, $src_h);
$paths= "image".$this->file_type($this->path);
if($paths($image1,dirname($this->path)."/".$name.basename($this->path))){
echo "增加文字水印成功!";
}else{
echo "增加文字水印失败!";
}
imagedestroy($image1);
imagedestroy($image);
}
}
/**
@param string $name
*/
function img_jianqie($src_x,$src_y,$src_w, $src_h,$name){
$dst_image=imagecreatetruecolor($src_w, $src_h);
list($width1,$height1)=getimagesize($this->path);
if($src_w>$width1$src_h>$height1){
die("错误!指定的宽和高大于原图片的宽高");
}
$path="imagecreatefrom".$this->file_type($this->path);
$src_image=$path($this->path);
imagecopyresampled($dst_image, $src_image, 0, 0, $src_x, $src_y, $src_w, $src_h, $src_w, $src_h);
$path1="image".$this->file_type($this->path);
if($path1($dst_image,dirname($this->path)."/".$name.basename($this->path))){
echo "图片剪切操作成功!";
}else{
echo "图片剪切操作失败!";
}
imagedestroy($dst_image);
imagedestroy($src_image);
}
/**
@param int $position 位置标符
/
private function position($position){
$arr=array();
list($width,$height)=getimagesize($this->path);
$a=60; //初始位于图片边缘的间隔
switch($position){
case 1: $x=$y=$a; break;
case 2: $x=$width/3+$a;$y=$a;break;
case 3: $x=$width/32+$a;$y=$a;break;
case 4: $x=$a;$y=$height/3+$a;break;
case 5: $x=$width/3+$a;$y=$height/3+$a;break;
case 6: $x=$width/32+$a;$y=$height/3+$a;break;
case 7: $x=$a;$y=$height/32+$a;break;
case 8: $x=$width/3+$a;$y=$height/32+$a;break;
case 9: $x=$width/32+$a;$y=$height/3*2+$a;break;
default: die("发生了错误!");
}
$arr[]=(int)$x;
$arr[]=(int)$y;
return $arr;
}
/**
@return string $type 文件类型
*/
private function file_type($url){
$url= substr($url, strtolower(strrpos($url,'.')+1)); //截取字符串获得 后缀
$url=='jpg'?$url='jpeg':$url;
return $url;
}
/**
错误处理类
*/
private function error(){
error_reporting(0); //关闭所有错误报告!
/**
}
set_error_handler("error_handler"); //调用自设的回调函数 处理出错的信息
}
}
$cheng =new Image("d:/img/3.jpg"); //待操作的图片路径
//$cheng ->suofang(200,200,'sf'); //对图片进行缩放操作
//$cheng ->shuiyin_ImgOrText(1, '我就是水印', 6, 'sy');//对图片增加水文字水印的操作
//$cheng ->shuiyin_ImgOrText(2, "d:/img/3.jpg", 6, 'sy');//对图片增加图片水印的操作
$cheng->img_jianqie(200, 200, 300, 300, 'jq'); //对图片进行剪切
2024 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123