PHP 做图片锐化处理
<?php
//读取图像的类型
//1=GIF,2=JPG,3=PNG,4=SWF,5=PSD,6=BMP,7=TIFF(intelbyteorder),8=TIFF(motorolabyteorder),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++){
/*
ImageColorsForIndex --- 从索引值取得颜色
语法 : array imagecolorsforindex (int im, int index)
说明 :此函数传回指定的颜色索引值的RGB值,传回的数组有red、green和blue这三个索引值,数组的值为指定的颜色索引值的RGB值。
ImageColorAt --- 取得像素的颜色索引值
语法 : int imagecolorat (int im, int x, int 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<br/>";
if(($dst_clr=imagecolorexact($dst_im,$r,$g,$b))==-1)
$dst_clr=Imagecolorallocate($dst_im,$r,$g,$b);
$cnt++;
if($dst_clr==-1)die("colorallocatefaileat$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);
}
?>
<form name="FormName" action="" method="post">
请输入图片的本地路径或URL:<br/>
<input name="ImageName" type="text" value="<?=$_POST["ImageName"]?>" size=32><br/>
锐化度数(例:0.6、3.0):<br/>
<input name="Degree" type="text" value="<?
=$_POST["Degree"]?
>"><br/>
<input type="submit" value="提交">
</form>
PHP 做图片锐化处理的更多相关文章
- 用Lighttpd做图片服务器
http://www.lsanotes.cn/install_lighttpd 用Lighttpd做图片服务器 一.安装lighttpd所需的库文件1.安装 pcrewgetftp://ftp.csx ...
- 使用HTML5的canvas做图片剪裁
前言 图片裁剪上传,不仅是一个很贴合用户体验的功能,还能够统一特定图片尺寸,优化网站排版,一箭双雕. 需求就是那么简单,在浏览器里裁剪图片并上传到服务器. 我第一个想到的方法就是,将图片和裁剪参数(x ...
- PHP语言学习之php做图片上传功能
本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...
- 基于jQuery适合做图片类网站的特效
分享一款基于jquery适合做图片类网站的特效.这是一款鼠标经过图片滑动弹出标题效果代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="c ...
- 使用FormData数据做图片上传: new FormData() canvas实现图片压缩
使用FormData数据做图片上传: new FormData() canvas实现图片压缩 ps: 千万要使用append不要用set 苹果ios有兼容问题导致数据获取不到,需要后台 ...
- Windows+Nginx+IIS做图片分布式存储详细步骤
最近几天,一直在学习nginx在windows平台下的使用,为了寻找几种大量图片分布式存储而且有相对简单的存储方案 nginx是一种,还找到一种MongoDB GridFS 这两种方案我还是比较中意的 ...
- tomcat用做图片服务器
最近做了个小网站,就是用tinyce富文本编辑器,https://www.511easy.com/ 保持字体排版和图片 发现博客园的图片,一天之后就无法显示 就想着自己做一个图片服务器,上传图片到指定 ...
- 记一次IE浏览器做图片预览的坑
随便写写吧,被坑死了 IE 10 及 IE10以上,可以使用FileReader的方式,来做图片预览,加载本地图片显示 IE 9 8 7 没有FileReader这个对象,所以只能使用微软自己的东西来 ...
- ViewPager做图片浏览器,加载大量图片OOM的问题修正
/** * @author CHQ * @version 1.0 * @date 创建时间: 2016/7/26 17:18 * @parameter * @return * 图片查看器 * //可以 ...
随机推荐
- FCC高级编程篇之Symmetric Difference
Symmetric Difference Create a function that takes two or more arrays and returns an array of the sym ...
- Vue this.$router.push、replace、go的区别
1.this.$router.push 描述:跳转到不同的url,但这个方法会向history添加一个记录,点击后会返回到上一个页面 用法 //字符串 this.$router.push('home' ...
- HDU-3416 Marriage Match IV 最短路+最大流 找各最短路的所有边
题目链接:https://cn.vjudge.net/problem/HDU-3416 题意 给一个图,求AB间最短路的条数(每一条最短路没有重边.可有重复节点) 思路 首先把全部最短路的边找出来,再 ...
- dropload上拉加载 下拉刷新
1.引入css.js <link rel="stylesheet" href=" ${pageContext.request.contextPath}/dist/d ...
- SSH的理解
SSH的利用,通俗的讲就是一个网络传输数据的加密协议,目前有一些基于SSH的构建了服务器-客户端的软件工具,在Windows上装一个客户端,Linux上则为服务端,这样就可以把Windows上写的内容 ...
- CentOS6.3从光盘安装gcc(更改yum源)[转]
转自:http://www.linuxidc.com/Linux/2012-11/73826.htm 一.加载光盘镜像 加载本地bin-DVD镜像文件到虚拟机系统,如图所示: 二.更改yum源 1.挂 ...
- Beat 'Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源代码
浓缩精华.专注战斗! 游戏的本质是什么?界面?养成?NoNo! 游戏来源于对实战和比赛的模拟,所以它的本源就是对抗.就是战斗! 是挥洒热血的一种方式! 一个游戏最复杂最难做的是什么?UI?商城? ...
- ormlite 中的onUpgrade
public class DBHelper extends OrmLiteSqliteOpenHelper { public static final String DB_NAME = "y ...
- Java排序之直接选择排序
public class SelectSort { public static void selectSort(int [] a){ int min; int temp; if(a==null || ...
- Mysql优化理论知识
参考文章 http://blog.51cto.com/lizhenliang/2095526 ()硬件优化 如果有条件一定要SSD固态硬盘代替SAS机械硬盘,将RAID级别调整为RAID1+,相对于R ...