php image处理,php 中图像压缩处理类(二)imageutil.php
/*
* @(#)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相关推荐
- 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
文章目录 一.创建 AIDL 文件 1.创建 AIDL 目录 2.创建 AIDL 文件 3.创建 Parcelable 类 4.AIDL 目录下声明 Parcelable 类 5.AIDL 中使用 P ...
- python中的新式类与旧式类的一些基于descriptor的概念(下)
3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...
- python中的新式类与旧式类的一些基于descriptor的概念(上)
python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
- python创建类的实例方法-Python中动态创建类实例的方法
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...
- 标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...
- ASP.NET2.0中的ClientScriptManager 类用法—如何添加客户端事件!
在ASP.NET2.0中,ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本.具有相同的键和类型的脚本被视为重复脚本.因此,我们可以使用脚本类型来避免混淆可能 ...
- PyTorch中nn.Module类中__call__方法介绍
在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...
- 【Qt】QtCreator中使用ActionManager类管理标题栏(MunuBar)、菜单(Menu)和菜单中的项目(Action)
1.简介 QtCreator中使用ActionManager类管理标题栏(MunuBar).菜单(Menu)和菜单中的项目(Action),下面以创建"New"动作为例,介绍Act ...
最新文章
- 【GDI+】 线段 文字 定位的问题(二)
- R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset)
- go 调用dll char*传输
- 一个基于 Spring Boot 的项目骨架,少造轮子!
- 千万条数据快速导入MySQL
- 如何使用p6spy来监控sql
- 迁移 Linux 系统,第 1 部分——如何迁移备份和裸机恢复 Linux 系统
- coreseek 利用python作数据源建立索引
- Unreal中为衣服增加物理效果
- 面试常见的功能测试考试题关于测试方法的
- Java程序出现不正常情况
- quartusII 9.1 USB blaster驱动安装
- 安装vpn和nat以及使用
- CCS6.2.0下加载C6748的GEL文件
- CODE[VS] 1219 骑士游历
- java-php-python-ssm试卷审批系统计算机毕业设计
- 字体的基础知识:英文字体区分练习
- 看小企业如何玩转大数据? 智慧商贸添助力
- 因为这台“黑科技”,科幻电影中的场景都成为了现实丨钛空舱
- 2016SEM百度竞价如何分词【太原网络营销师】{郭文军}解析
热门文章
- pyplot 画多个图时搅合到了一起_这些认数字游戏,宝宝最喜欢,家长可以和宝宝一起玩...
- lazada发货_Lazada 怎么发货:Lazada 订单发货流程
- su切换到oracle后怎么退出,linux下启动oralce和关闭oracle以及数据库实例化
- Rabbitmq的原生javaAPI讲解
- gps测速仪手机版下载_银豹收银系统手机版下载-银豹收银系统手机安卓版APP下载v2.0.1.2...
- 搭建CentOS7.6容器镜像
- java返回链表的中间结点_876. 链表的中间结点
- ubuntu保存_Arch与Ubuntu安装软件对比
- 学习笔记--asp.net页生命周期(转自msdn,仅为自己学习存储和有意读者使用)
- 中专计算机网络技术试卷,2018年中职对口升学计算机网络技术模拟试题