用PHP实现图象锐化代码


Posted in PHP onJune 14, 2007
<?
//读取图像的类型  
//1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF  
function GetImageType($filename) {
	return (($imginfo=@getimagesize($filename))!=null ? $imginfo[2] : null);
}
//图像锐化  
//$scr_im:图像资源句柄,$degree:锐化度数  
function Sharp(&$src_im, &$dst_im, $degree) {
	$src_x = imagesx($src_im);
	$src_y = imagesy($src_im);
	//$dst_im = imagecreate($src_x, $src_y);  
	//imagecopy($dst_im, $src_im, 0, 0, 0, 0, $src_x, $src_y);  
	$cnt = 0;
	for ($x=1; $x<$src_x; $x++)  
	 for ($y=1; $y<$src_y; $y++) {
		$src_clr1 = imagecolorsforindex($src_im, imagecolorat($src_im, $x-1, $y-1));
		$src_clr2 = imagecolorsforindex($src_im, imagecolorat($src_im, $x, $y));
		$r = intval($src_clr2["red"]+$degree*($src_clr2["red"]-$src_clr1["red"]));
		$g = intval($src_clr2["green"]+$degree*($src_clr2["green"]-$src_clr1["green"]));
		$b = intval($src_clr2["blue"]+$degree*($src_clr2["blue"]-$src_clr1["blue"]));
		$r = min(255, max($r, 0));
		$g = min(255, max($g, 0));
		$b = min(255, max($b, 0));
		//echo "r:$r, g:$g, b:$b";  
		if (($dst_clr=imagecolorexact($dst_im, $r, $g, $b))==-1)  
		 $dst_clr = Imagecolorallocate($dst_im, $r, $g, $b);
		$cnt++;
		if ($dst_clr==-1) die("color allocate faile at $x, $y ($cnt).");
		imagesetpixel($dst_im, $x, $y, $dst_clr);
	}
	return $dst_im;
}
$ImageFunctions = array("imagecreatefromwbmp", "imagecreatefromgif", "imagecreatefromjpeg", "imagecreatefrompng");
if (!empty($_POST["ImageName"])) {
	set_time_limit(10*60);
	if (($ImageType=GetImageType($_POST["ImageName"]))==false)  
	 die("指定文件不存在或不是有效的图片或不支持类型!");
	if ($ImageType==6) $ImageType = 0;
	if ($ImageType>3) die("不支持的图片类型!");
	$im1 = $ImageFunctions[$ImageType]($_POST["ImageName"]);
	$im2 = $ImageFunctions[$ImageType]($_POST["ImageName"]);
	//print_r(imagecolorsforindex($im, imagecolorat($im, 10, 10)));  
	Sharp($im1, $im2, $_POST["Degree"]);
	header("Content-type: image/png");
	imagepng($im2);
	imagedestroy($im1);
	imagedestroy($im2);
}
?>
function Sharp2(&$im, $degree) {
	$cnt = 0;
	for ($x=imagesx($im)-1; $x>0; $x--)  
	 for ($y=imagesy($im)-1; $y>0; $y--) {
		$clr1 = imagecolorsforindex($im, imagecolorat($im, $x-1, $y-1));
		$clr2 = imagecolorsforindex($im, imagecolorat($im, $x, $y));
		$r = intval($clr2["red"]+$degree*($clr2["red"]-$clr1["red"]));
		$g = intval($clr2["green"]+$degree*($clr2["green"]-$clr1["green"]));
		$b = intval($clr2["blue"]+$degree*($clr2["blue"]-$clr1["blue"]));
		$r = min(255, max($r, 0));
		$g = min(255, max($g, 0));
		$b = min(255, max($b, 0));
		//echo "r:$r, g:$g, b:$b
		";  
 if (($new_clr=imagecolorexact($im, $r, $g, $b))==-1)  
 $new_clr = Imagecolorallocate($im, $r, $g, $b);  
 $cnt++;  
 if ($new_clr==-1) die("color allocate faile at $x, $y ($cnt).");  
 imagesetpixel($im, $x, $y, $new_clr);  
 }  
}
PHP 相关文章推荐
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
php 字符串函数收集
Mar 29 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
Nov 27 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
Git命令之分支详解
Mar 02 PHP
PHP静态新闻列表自动生成代码
Jun 14 #PHP
discuz安全提问算法
Jun 06 #PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 #PHP
phpMyAdmin下载、安装和使用入门教程
May 31 #PHP
测试您的 PHP 水平的题目
May 30 #PHP
Discuz板块横排显示图片的实现方法
May 28 #PHP
中国站长站 For Dede4.0 采集规则
May 27 #PHP
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
javascript call方法使用说明
2010/01/11 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python模块常用用法实例详解
2019/10/17 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
Javascript如何发送一个Ajax请求
2015/01/26 面试题
艺术应用与设计个人的自我评价
2013/11/23 职场文书
十八大报告观后感
2014/01/28 职场文书
法制宣传实施方案
2014/03/13 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
学校开学标语
2014/10/06 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
利用Python实现模拟登录知乎
2022/05/25 Python