php 代码
- <?php
- /**
- *@package Image
- *@use 图片处理
- *@author 刘建武 tianhao86@hotmail.com
- **/
- class Image {
- public function __construct() {
- }
- /******************************************************************************
- *函数名称:thumb
- *函数功能:自动生成缩略图函数
- *参数 :$srcFile,$dstimg,$dstW,$dstH,$power,$out,$quality
- *参数意义:
- $srcFile: 图片源文件;
- $dstimg: 图片目标文件;
- $dstW: 要求缩略图的宽;
- $dstH: 要求缩略图的高;
- $power: 缩略类型,缺省值 0
- 0 表示按比例缩放,宽高不大于要求的宽高;
- 1 表示按比例缩放宽高不小于要求,在中部切割;
- 其他任何值,不按比例缩放为要求的宽高;
- $out: 是否把缩略图输出到浏览器,缺省值 0
- 0 或其他任何值,不输出;
- 1 输出;
- $quality: 图片的压缩质量(1到100),缺省值 100
- *返回类型:bool,false 表示执行错误;true 表示执行成功;
- *******************************************************************************/
- static public function thumb($srcFile,$dstimg,$dstW,$dstH,$power=0,$out=0,$quality=100) {
- if(!file_exists($srcFile)) return false; //如果源文件部存在就返回false
- $data = GetImageSize($srcFile);
- $srcW = $data[0]; //图片宽度,单位是像素 (pixel)
- $srcH = $data[1]; //图片高度,单位是像素 (pixel)
- $dsX = 0; //paste开始的x坐标,单位是像素 (pixel)
- $dsY = 0; //paste开始的y坐标,单位是像素 (pixel)
- $srX = 0; //copy开始的x坐标,单位是像素 (pixel)
- $srY = 0; //copy开始的y坐标,单位是像素 (pixel)
- if(!$dstW>0 || !$dstH>0) return false; //如果宽高有一个小于零,返回false
- if($power==0) { //如果是自动按比例 缩放处理预定义的宽高参数
- if($dstW/$dstH >= $srcW/$srcH) { //原图片太高
- $dstW = $srcW * ($dstH/$srcH);
- }
- else { //原图片太宽
- $dstH = $srcH * ($dstW/$srcW);
- }//end if
- }
- elseif($power==1) { //如果是按比例缩放后 切其中部的位置处理
- if($dstW/$dstH >= $srcW/$srcH) { //原图片太高
- $srcH = $dstH * $srcW/$dstW;
- $srY = ($data[1]-$srcH)/2;
- }
- else { //原图片太宽
- $srcW = $dstW * $srcH/$dstH;
- $srX = ($data[0]-$srcW)/2;
- }//end if
- }//end if
- switch($data[2]) {
- case 1: //图片类型,1是GIF图
- $im = @imagecreatefromgif($srcFile);
- break;
- case 2: //图片类型,2是JPG图
- $im = @imagecreatefromjpeg($srcFile);
- break;
- case 3: //图片类型,3是PNG图
- $im = @imagecreatefrompng($srcFile);
- break;
- }//end switch
- ///判断系统是否支持真彩函数
- if (!$ni = @imagecreatetruecolor($dstW,$dstH)) {
- $ni = @imagecreate($dstW,$dstH);
- }//end if
- if (function_exists("imagecopyresampled")) { ///判断系统是否支持真彩copy函数
- imagecopyresampled($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);
- }
- else {
- imagecopyresized($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);
- }//end if
- if(is_int($quality)==false) { //如果质量参数不是integer类型,则强制设置类型
- settype($quality, "integer");
- }//end if
- if($quality>100 || $quality<1) { //如果质量参数没有在1到100之间,则设置为100
- $quality = 100;
- }//end if
- imagejpeg($ni,$dstimg,$quality);
- if($out==1) { //如果要求输出到浏览器,,则输出
- ImageJpeg($ni);
- }//end if
- return $dstimg;
- }//end function thumb
- /**
- * 截取固定大小的图片
- * $srcFile: 图片源文件;
- */
- static public function MakePic($pSrcFile, $pWidth, $pHeight, $pThumpFile){
- if(!file_exists($pSrcFile)) return false;
- $image = $pSrcFile; // 原图
- $imgstream = file_get_contents($image);
- $im = imagecreatefromstring($imgstream);
- $x = imagesx($im);
- $y = imagesy($im);
- $data = GetImageSize($pSrcFile);
- $srcW = $data[0]; //图片宽度,单位是像素 (pixel)
- $srcH = $data[1]; //图片高度,单位是像素 (pixel)
- $dsX = 0; //paste开始的x坐标,单位是像素 (pixel)
- $dsY = 0; //paste开始的y坐标,单位是像素 (pixel)
- $srX = ceil($srcW/2-$pWidth/2); //copy开始的x坐标,单位是像素 (pixel)
- if($srX<0) $srX = 0;
- $srY = ceil($srcH/2-$pHeight/2); //copy开始的y坐标,单位是像素 (pixel)
- if($srY<0) $srY = 0;
- $thumbw = $pWidth; // 期望的目标图宽
- $thumbh = $pHeight; // 期望的目标图高
- if($srcW<$thumbw) return false;
- if(function_exists("imagecreatetruecolor")){
- $dim = imagecreatetruecolor($thumbw, $thumbh); // 创建目标图gd2
- }
- else{
- $dim = imagecreate($thumbw, $thumbh); // 创建目标图gd1
- }
- $ok = imagecopyresized ($dim,$im, $dsX, $dsY, $srX, $srY, $thumbw,$thumbh,$thumbw,$thumbh);
- switch($data[2]) {
- case 1: //图片类型,1是GIF图
- imagegif($dim, $pThumpFile);;
- break;
- case 2: //图片类型,2是JPG图
- imagejpeg($dim, $pThumpFile);
- break;
- case 3: //图片类型,3是PNG图
- imagepng($dim, $pThumpFile);
- break;
- }//end switch
- return $ok;
- }
- }
- ?>
相关推荐
Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文转码工具类-fastjson工具类-文件工具类-Http工具类-http请求工具类-用于模拟HTTP请求中GET/POST方式 -图片处理工具类-Ip工具类-mail工具类-Map工具...
Android--开发--常用图片特效处理
数字图像处理常用图片BMP
图像处理中经常使用的图片,包括lena、cameraman等图片
包括常用的数字图像处理的标准图,包括lena,cameraman等等经典图片
随着智能手机的普及,图片处理应用成为了用户日常生活中的重要工具。Android作为市场占有率最高的手机操作系统,为图片处理应用提供了广阔的市场空间。本项目旨在开发一款功能丰富、易于使用、性能稳定的Android图片...
常用图片特效处理源码.zip
本文为大家分享的php常用图片处理类,供大家参考学习,具体内容如下,在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,使用图片缩放功能,裁剪功能,加图片水印功能,感兴趣的朋友们...
图片都是512分辨率的,可以很 airplane. png arctichare.png baboon. png barbara.png boat.png boy.bmp cameraman.tif cat.png Prints.pgm fruits.png rymire.png girl.png goldhill.png lena.png monarch.png ...
OpenCV C++图像处理常用图片,包括lenna,finger,boats,man,tiffany,yacht,sailboat,pepper,pens,girl,fruits,flowers,bridge等等
C#图片缩放类、将彩色图像变成黑白图像、使图像产生浮雕的效果、图片文件、数据流、Image 类型数据之间的转换 还有各种各样 的操作
常用开发工具类文件复制,日志打印,图片处理,toast.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
基本图片处理,用于完成图片缩入,水印添加,当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小,水印图可以设置跟背景的合并度,程序会按照图片的尺寸从中部裁切最大的正方形,并按目标尺寸进行缩略,...
图像处理常用图片(BMP格式512*512大小)收集了很久
图像处理库常用的工具类,例如图像处理,求图像的积分图,对图像进行距离变换,边缘检测,以及一些矩阵运算常用方法
学习图像处理最常用的图片(很齐全很强大) 下了绝不后悔
如网络下载,多线程与线程池的管理,数据库ORM,图片缓存管理,图片文件下载上传,Http请求工具,常用工具类(字符串,日期,文件处理,图片处理工具类等),能够使您的应用在团队开发中减少冗余代码,很大的提高了...
处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB...
常用的数字图像处理测试图片,很实用,在实验中都用得着。
本文为大家分享的php常用图片处理类,供大家参考学习,具体内容如下 <?php /*已知问题:1.在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,但PNG格式的图片无法透明。用...