/*

* @(#)imageutil.php

*

* Copyright 2007 SoftRoad. All Rights Reserved.

*

*====================================================================

* 変更履歴

*

* 新規作成                            2007年5月11日   蒋 彪

*/

require ("bmp.php"); //http://blog.csdn.net/joliny/archive/2007/06/20/1659441.aspx

/**

* イメージ操作共通クラス

*

* @author 蒋 彪

*/

class ImageUtil {

/*

* イメージ拡大・縮小

* $uploadfile 絶対パス(元)

* $thumbfile 絶対パス(先)

* $width 新しいサイズ・幅

* $height 新しいサイズ・高さ

*/

function resize($uploadfile, $thumbfile, $width, $height) {

$size = GetImageSize($uploadfile);

if ($size[2] == 1)

$im_in = imagecreatefromgif($uploadfile);

if ($size[2] == 2)

$im_in = imagecreatefromjpeg($uploadfile);

if ($size[2] == 3)

$im_in = imagecreatefrompng($uploadfile);

if ($size[2] == 6) {

$im_in = imagecreatefrombmp($uploadfile);

}

if ($width == "" || $width == 0) {

$width = $size[0];

}

if ($height == "" || $height == 0) {

$height = $size[1];

}

$im_out = ImageCreateTrueColor($width, $height);

/*ImageCopyResized*/

imagecopyresampled($im_out, $im_in, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);

Imagejpeg($im_out, $thumbfile);

chmod($thumbfile, 0777);

ImageDestroy($im_in);

ImageDestroy($im_out);

}

function imgResize($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) {

ImagePaletteCopy($dst_img, $src_img);

$rX = $src_w / $dst_w;

$rY = $src_h / $dst_h;

$nY = 0;

for ($y = $src_y; $y < $dst_h; $y++) {

$oY = $nY;

$nY = intval(($y +1) * $rY +.5);

$nX = 0;

for ($x = $src_x; $x < $dst_w; $x++) {

$r = $g = $b = $a = 0;

$oX = $nX;

$nX = intval(($x +1) * $rX +.5);

for ($i = $nY; -- $i >= $oY;) {

for ($j = $nX; -- $j >= $oX;) {

$c = ImageColorsForIndex($src_img, ImageColorAt($src_img, $j, $i));

$r += $c['red'];

$g += $c['green'];

$b += $c['blue'];

$a++;

}

}

ImageSetPixel($dst_img, ($x + $dst_x - $src_x), ($y + $dst_y - $src_y), ImageColorClosest($dst_img, $r / $a, $g / $a, $b / $a));

}

}

}

}?>

php image处理,php 中图像压缩处理类(二)imageutil.php相关推荐

  1. 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )

    文章目录 一.创建 AIDL 文件 1.创建 AIDL 目录 2.创建 AIDL 文件 3.创建 Parcelable 类 4.AIDL 目录下声明 Parcelable 类 5.AIDL 中使用 P ...

  2. python中的新式类与旧式类的一些基于descriptor的概念(下)

    3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...

  3. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  4. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  5. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  6. 标准C++中的string类的用法总结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  7. ASP.NET2.0中的ClientScriptManager 类用法—如何添加客户端事件!

    在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能 ...

  8. PyTorch中nn.Module类中__call__方法介绍

    在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...

  9. 【Qt】QtCreator中使用ActionManager类管理标题栏(MunuBar)、菜单(Menu)和菜单中的项目(Action)

    1.简介 QtCreator中使用ActionManager类管理标题栏(MunuBar).菜单(Menu)和菜单中的项目(Action),下面以创建"New"动作为例,介绍Act ...

最新文章

  1. 【GDI+】 线段 文字 定位的问题(二)
  2. R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset)
  3. go 调用dll char*传输
  4. 一个基于 Spring Boot 的项目骨架,少造轮子!
  5. 千万条数据快速导入MySQL
  6. 如何使用p6spy来监控sql
  7. 迁移 Linux 系统,第 1 部分——如何迁移备份和裸机恢复 Linux 系统
  8. coreseek 利用python作数据源建立索引
  9. Unreal中为衣服增加物理效果
  10. 面试常见的功能测试考试题关于测试方法的
  11. Java程序出现不正常情况
  12. quartusII 9.1 USB blaster驱动安装
  13. 安装vpn和nat以及使用
  14. CCS6.2.0下加载C6748的GEL文件
  15. CODE[VS] 1219 骑士游历
  16. java-php-python-ssm试卷审批系统计算机毕业设计
  17. 字体的基础知识:英文字体区分练习
  18. 看小企业如何玩转大数据? 智慧商贸添助力
  19. 因为这台“黑科技”,科幻电影中的场景都成为了现实丨钛空舱
  20. 2016SEM百度竞价如何分词【太原网络营销师】{郭文军}解析

热门文章

  1. pyplot 画多个图时搅合到了一起_这些认数字游戏,宝宝最喜欢,家长可以和宝宝一起玩...
  2. lazada发货_Lazada 怎么发货:Lazada 订单发货流程
  3. su切换到oracle后怎么退出,linux下启动oralce和关闭oracle以及数据库实例化
  4. Rabbitmq的原生javaAPI讲解
  5. gps测速仪手机版下载_银豹收银系统手机版下载-银豹收银系统手机安卓版APP下载v2.0.1.2...
  6. 搭建CentOS7.6容器镜像
  7. java返回链表的中间结点_876. 链表的中间结点
  8. ubuntu保存_Arch与Ubuntu安装软件对比
  9. 学习笔记--asp.net页生命周期(转自msdn,仅为自己学习存储和有意读者使用)
  10. 中专计算机网络技术试卷,2018年中职对口升学计算机网络技术模拟试题