`
tianhao86
  • 浏览: 8547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

常用类----图片处理类

    博客分类:
  • php
阅读更多
php  代码
  1. <?php   
  2. /**     
  3.  *@package Image    
  4.  *@use   图片处理   
  5.  *@author 刘建武   tianhao86@hotmail.com   
  6.  **/      
  7. class Image {       
  8.     public function __construct() {       
  9.     }       
  10.       
  11.     /******************************************************************************     
  12.     *函数名称:thumb     
  13.     *函数功能:自动生成缩略图函数     
  14.     *参数    :$srcFile,$dstimg,$dstW,$dstH,$power,$out,$quality     
  15.     *参数意义:     
  16.     $srcFile:   图片源文件;     
  17.     $dstimg:    图片目标文件;     
  18.     $dstW:      要求缩略图的宽;     
  19.     $dstH:      要求缩略图的高;     
  20.     $power: 缩略类型,缺省值 0     
  21.     0 表示按比例缩放,宽高不大于要求的宽高;     
  22.     1 表示按比例缩放宽高不小于要求,在中部切割;     
  23.     其他任何值,不按比例缩放为要求的宽高;     
  24.     $out:       是否把缩略图输出到浏览器,缺省值 0     
  25.     0 或其他任何值,不输出;     
  26.     1 输出;     
  27.     $quality:   图片的压缩质量(1到100),缺省值 100     
  28.     *返回类型:bool,false 表示执行错误;true 表示执行成功;       
  29.     *******************************************************************************/      
  30.     static public function thumb($srcFile,$dstimg,$dstW,$dstH,$power=0,$out=0,$quality=100) {       
  31.         if(!file_exists($srcFile)) return false;        //如果源文件部存在就返回false       
  32.         $data = GetImageSize($srcFile);       
  33.       
  34.         $srcW   = $data[0];             //图片宽度,单位是像素 (pixel)       
  35.         $srcH   = $data[1];             //图片高度,单位是像素 (pixel)       
  36.         $dsX    = 0;                    //paste开始的x坐标,单位是像素 (pixel)       
  37.         $dsY    = 0;                    //paste开始的y坐标,单位是像素 (pixel)       
  38.         $srX    = 0;                    //copy开始的x坐标,单位是像素 (pixel)       
  39.         $srY    = 0;                    //copy开始的y坐标,单位是像素 (pixel)       
  40.       
  41.         if(!$dstW>0 || !$dstH>0return false;          //如果宽高有一个小于零,返回false       
  42.       
  43.         if($power==0) {                     //如果是自动按比例  缩放处理预定义的宽高参数       
  44.             if($dstW/$dstH >= $srcW/$srcH) {                    //原图片太高       
  45.                 $dstW   = $srcW * ($dstH/$srcH);       
  46.             }       
  47.             else {              //原图片太宽       
  48.                 $dstH   = $srcH * ($dstW/$srcW);       
  49.             }//end if       
  50.         }       
  51.         elseif($power==1) {     //如果是按比例缩放后 切其中部的位置处理       
  52.             if($dstW/$dstH >= $srcW/$srcH) {                    //原图片太高       
  53.                 $srcH   = $dstH * $srcW/$dstW;       
  54.                 $srY    = ($data[1]-$srcH)/2;       
  55.             }       
  56.             else {              //原图片太宽       
  57.                 $srcW   = $dstW * $srcH/$dstH;       
  58.                 $srX    = ($data[0]-$srcW)/2;       
  59.             }//end if       
  60.         }//end if       
  61.         switch($data[2]) {       
  62.             case 1//图片类型,1是GIF图       
  63.             $im = @imagecreatefromgif($srcFile);       
  64.             break;       
  65.             case 2//图片类型,2是JPG图       
  66.             $im = @imagecreatefromjpeg($srcFile);       
  67.             break;       
  68.             case 3//图片类型,3是PNG图       
  69.             $im = @imagecreatefrompng($srcFile);       
  70.             break;       
  71.         }//end switch       
  72.         ///判断系统是否支持真彩函数       
  73.         if (!$ni = @imagecreatetruecolor($dstW,$dstH)) {       
  74.             $ni     = @imagecreate($dstW,$dstH);       
  75.         }//end if       
  76.         if (function_exists("imagecopyresampled")) {                                ///判断系统是否支持真彩copy函数       
  77.             imagecopyresampled($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);       
  78.         }       
  79.         else {       
  80.             imagecopyresized($ni,$im,$dsX,$dsY,$srX,$srY,$dstW,$dstH,$srcW,$srcH);       
  81.         }//end if       
  82.         if(is_int($quality)==false) {                           //如果质量参数不是integer类型,则强制设置类型       
  83.             settype($quality, "integer");       
  84.         }//end if       
  85.         if($quality>100 || $quality<1) {                                //如果质量参数没有在1到100之间,则设置为100       
  86.             $quality    = 100;       
  87.         }//end if       
  88.         imagejpeg($ni,$dstimg,$quality);       
  89.         if($out==1) {                                       //如果要求输出到浏览器,,则输出       
  90.             ImageJpeg($ni);       
  91.         }//end if       
  92.         return $dstimg;       
  93.     }//end function thumb       
  94.       
  95.           
  96.     /**     
  97.      * 截取固定大小的图片     
  98.      * $srcFile:   图片源文件;     
  99.      */      
  100.     static  public function MakePic($pSrcFile, $pWidth, $pHeight, $pThumpFile){       
  101.       
  102.         if(!file_exists($pSrcFile)) return false;       
  103.         $image = $pSrcFile; // 原图       
  104.         $imgstream = file_get_contents($image);       
  105.         $im = imagecreatefromstring($imgstream);       
  106.         $x = imagesx($im);       
  107.         $y = imagesy($im);       
  108.       
  109.         $data = GetImageSize($pSrcFile);       
  110.            
  111.         $srcW   = $data[0];             //图片宽度,单位是像素 (pixel)       
  112.         $srcH   = $data[1];             //图片高度,单位是像素 (pixel)       
  113.         $dsX    = 0;                    //paste开始的x坐标,单位是像素 (pixel)       
  114.         $dsY    = 0;                    //paste开始的y坐标,单位是像素 (pixel)       
  115.         $srX    = ceil($srcW/2-$pWidth/2); //copy开始的x坐标,单位是像素 (pixel)       
  116.         if($srX<0) $srX = 0;       
  117.                            
  118.         $srY    = ceil($srcH/2-$pHeight/2); //copy开始的y坐标,单位是像素 (pixel)       
  119.         if($srY<0) $srY = 0;                       
  120.         $thumbw = $pWidth; // 期望的目标图宽       
  121.         $thumbh = $pHeight; // 期望的目标图高       
  122.                
  123.         if($srcW<$thumbw) return false;       
  124.                
  125.         if(function_exists("imagecreatetruecolor")){       
  126.             $dim = imagecreatetruecolor($thumbw, $thumbh); // 创建目标图gd2       
  127.         }       
  128.         else{       
  129.             $dim = imagecreate($thumbw, $thumbh); // 创建目标图gd1       
  130.         }       
  131.         $ok = imagecopyresized ($dim,$im, $dsX, $dsY, $srX, $srY, $thumbw,$thumbh,$thumbw,$thumbh);       
  132.         switch($data[2]) {       
  133.             case 1//图片类型,1是GIF图       
  134.             imagegif($dim, $pThumpFile);;       
  135.             break;       
  136.             case 2//图片类型,2是JPG图       
  137.             imagejpeg($dim, $pThumpFile);       
  138.             break;       
  139.             case 3//图片类型,3是PNG图       
  140.             imagepng($dim, $pThumpFile);       
  141.             break;       
  142.         }//end switch       
  143.       
  144.         return $ok;       
  145.     }       
  146. }       
  147. ?>       
分享到:
评论

相关推荐

    javaweb项目常用工具包

    Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文转码工具类-fastjson工具类-文件工具类-Http工具类-http请求工具类-用于模拟HTTP请求中GET/POST方式 -图片处理工具类-Ip工具类-mail工具类-Map工具...

    CUB-200-2011-ViT鸟类分类-高质量精讲

    6. 训练与优化:使用交叉熵损失函数作为优化目标,通过反向传播更新模型参数,常用优化器如Adam或SGD可以加速训练过程。 7. 结果评估:使用验证集进行模型性能评估,如准确率、Top-5错误率等指标,最终在测试集上...

    华为云对象存储服务-图片处理特性指南.pdf

    本指南主要聚焦于华为云OBS的图片处理特性,帮助用户理解和利用这些特性优化图片管理和应用。 1.1 什么是图片处理? 图片处理是指在华为云OBS上对存储的图片进行一系列操作,如缩放、裁剪、旋转、水印添加、格式...

    Android--开发--常用图片特效处理.rar

    这个名为"Android--开发--常用图片特效处理.rar"的压缩包很可能包含了实现各种图片特效的技术文档、示例代码或库资源。下面我们将详细探讨一些Android平台上常见的图片特效处理技术。 1. **图片裁剪与旋转**: 在...

    Android应用源码常用图片特效处理-IT计算机-毕业设计.zip

    这份"Android应用源码常用图片特效处理"的资源包,为开发者提供了一系列实用的图像处理技术,适用于毕业设计或论文研究。以下将详细介绍其中可能涵盖的知识点: 1. **图片加载库**: - `Glide`:一个高效、简洁的...

    ios-平时项目常用分类.zip

    这个"ios-平时项目常用分类.zip"文件包含了一个名为DDCategoryDemo的示例,很可能是为了展示如何巧妙地利用类别来增强代码的可复用性和组织性。 分类在iOS开发中的主要用途包括: 1. **扩展已有功能**:当Apple的...

    常用Content-type

    同样,如果一个图片文件的`Content-type`设置为文本类型,浏览器将无法正确显示图片。 总的来说,理解并正确使用`Content-type`对于开发健壮、安全的Web应用至关重要,它可以确保数据的准确传输和正确的用户端处理...

    图片处理学习1-读取图片的信息

    在这个“图片处理学习1-读取图片的信息”主题中,我们将深入探讨如何利用编程语言进行这些操作,特别关注Python中的PIL(Python Imaging Library)库和OpenCV库,这两个库在图像处理中非常常用。 首先,PIL是Python...

    C#常用类集

    5. 视频和图片处理: - **System.Drawing**: .NET框架的基础图形处理库,可以用于处理图像,如加载、保存、裁剪、旋转图片。 - **AForge.NET**: 这是一个开源库,提供了一系列高级的图像处理和计算机视觉功能,如...

    Qt常用类介绍

    ### Qt常用类详解 #### 一、概述 在Qt编程中,掌握常用类的使用是十分重要的基础。本文将详细介绍Qt中的两类基本组件:基本类和窗口类。 1. **基本类**:这类对象通常不从`QObject`派生而来,主要用于处理基本的...

    计算机毕业设计 - android常用图片特效处理,保证可靠运行,计算机毕业生可参考,免费资源下载

    随着智能手机的普及,图片处理应用成为了用户日常生活中的重要工具。Android作为市场占有率最高的手机操作系统,为图片处理应用提供了广阔的市场空间。本项目旨在开发一款功能丰富、易于使用、性能稳定的Android图片...

    C# 图像处理类(大而全)

    C#中的Image类提供了多种方式来处理图像数据,包括从文件加载、保存到文件,以及从/到数据流的转换。例如: ```csharp // 从文件加载到Image对象 Image image = Image.FromFile("图片.jpg"); // 将Image对象保存到...

    Android-Android常用工具类

    6. **图片处理工具类**: - `ImageUtils`:包括图片的压缩、裁剪、加载等功能,适用于优化应用性能和用户体验。 7. **权限处理工具类**: - `PermissionUtils`:在Android 6.0及以上版本,处理运行时权限申请和...

    安卓开发框架工具类相关-安卓开发也会经常用到的28个java常用的工具类源码.zip

    7. **图片处理工具类**: - 图片压缩:优化图片大小,减少内存占用。 - 图片裁剪和旋转:用于用户选择照片后进行调整。 8. **设备和系统信息工具类**: - 获取设备信息:如屏幕分辨率、设备型号等。 - 系统版本...

    linux命令--图片格式

    在Linux操作系统中,管理和操作图片文件常常涉及到一系列的命令行工具。这些命令使得用户无需图形化界面即可高效地处理...在实际操作中,结合具体的场景和需求,灵活运用这些命令,可以完成各种复杂的图片处理任务。

    Android代码-安卓常用工具类

    6. **图片处理**: - `ImageUtils`:图片的压缩、裁剪、加载、缓存等操作,可能封装了Glide、Picasso等库。 7. **设备信息**: - `DeviceUtils`:获取设备信息,如设备型号、屏幕尺寸、系统版本等。 8. **动画**...

    php常用图片处理类.zip

    本文为大家分享的php常用图片处理类,供大家参考学习,具体内容如下,在图片缩放功能中,使用imagecreatetruecolor函数创建画布,并使用透明处理算法,使用图片缩放功能,裁剪功能,加图片水印功能,感兴趣的朋友们...

    Android-简单的Android工具类包含ActivityFragmentApplication基类和各类常用工具类集合

    - Android开发中常见的工具类包括:字符串工具类(处理字符串格式化、拼接等)、日期时间工具类(格式化日期和时间)、网络工具类(检查网络状态、发起网络请求)、图片处理工具类(裁剪、压缩、加载图片)等。...

    Android 常用图片特效处理源码

    本资源包"Android 常用图片特效处理源码"提供了一系列的代码示例,帮助开发者掌握并实现各种图片处理技术。以下是根据这些文件名和描述可以推测出的一些关键知识点: 1. **图片滤镜**: - 在Android中,图片滤镜...

    Android-安卓常用工具类

    4. **图片加载工具类**:如`Glide`、`Picasso`等,它们用于高效地加载和显示网络或本地的图片,支持缓存、裁剪、圆角处理等功能,避免内存溢出。 5. **权限管理工具类**:在Android 6.0及以上版本,需要动态申请...

Global site tag (gtag.js) - Google Analytics