≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP 缩略图锐化函数的简单示例

人气:750 时间:2018-09-23

这篇文章主要为大家详细介绍了PHP 缩略图锐化函数的简单示例,具有一定的参考价值,可以用来参考一下。

对PHP 缩略图锐化函数感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
跟据php版本不同, 可能效果不同, 请把三个函数都试试, 看哪个效果更佳就选择用哪个. 让缩略图不再模糊.

/**
 * PHP 缩略图锐化函数
 *
 * @param 
 * @arrange 512-笔记网: www.q1010.com
 **/
fun_imageconvolution_default($im,-10.9);
fun_imageconvolution_fast($im,0.4);
fun_imageconvolution($im,array(array(-1,-1,-1,), 
array(-1,16,-1,), 
array(-1,-1,-1)), 8, 0);
# $im 为资源值 imagecreatetruecolor() 返回.
function fun_imageconvolution_default(&$im,$degree=-10.9){
if (!$im)
return false;
imagefilter($im,IMG_FILTER_SMOOTH,-10.9);
imageantialias ($im,true);
return true;
}
function fun_imageconvolution_fast(&$im,$degree=0.4){
if (!$im)
return false;
for ($x = imagesx($im)-1; $x>0; $x--){
for ($y = imagesy($im)-1; $y>0; $y--){
$clr1 = imagecolorsforindex($im, $alpha = 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)); 
$new_a = $alpha >> 24;
if (($new_clr=ImageColorAllocateAlpha($im, $r, $g, $b,$new_a)) == -1) 
$new_clr = ImageColorClosestAlpha($im, $r, $g, $b,$new_a);
if($new_clr)
imagesetpixel($im, $x, $y, $new_clr); 
}
}
return true;
}
function fun_imageconvolution($src, $filter=array(array(-1,-1,-1,), 
array(-1,16,-1,), 
array(-1,-1,-1)), $filter_div=8, $offset=0){
if (!$src)
return false;
$sx = imagesx($src);
$sy = imagesy($src);
$srcback = ImageCreateTrueColor ($sx, $sy);
ImageCopy($srcback, $src,0,0,0,0,$sx,$sy);
if(!$srcback)
return false;
#FIX HERE
#$pxl array was the problem so simply set it with very low values
$pxl = array(1,1);
#this little fix worked for me as the undefined array threw out errors
for ($y=0; $y<$sy; ++$y){
for($x=0; $x<$sx; ++$x){
$new_r = $new_g = $new_b = 0;
for ($j=0; $j<3; ++$j) {
$yv = min(max($y - 1 + $j, 0), $sy - 1);
for ($i=0; $i<3; ++$i) {
$pxl = array(min(max($x - 1 + $i, 0), $sx - 1), $yv);
$rgb = imagecolorat($srcback, $pxl[0], $pxl[1]);
$new_r += (($rgb >> 16) & 0xFF) * $filter[$j][$i];
$new_g += (($rgb >> 8) & 0xFF) * $filter[$j][$i];
$new_b += ($rgb & 0xFF) * $filter[$j][$i];
}
}
$new_r = ($new_r/$filter_div)+$offset;
$new_g = ($new_g/$filter_div)+$offset;
$new_b = ($new_b/$filter_div)+$offset;
$new_r = ($new_r > 255)? 255 : (($new_r < 0)? 0:$new_r);
$new_g = ($new_g > 255)? 255 : (($new_g < 0)? 0:$new_g);
$new_b = ($new_b > 255)? 255 : (($new_b < 0)? 0:$new_b);
$alpha = imagecolorat($srcback, $pxl[0], $pxl[1]);
$new_a = $alpha >> 24;
$new_pxl = ImageColorAllocateAlpha($src, $new_r+0, $new_g+0, $new_b+0, $new_a);
if ($new_pxl == -1) {
$new_pxl = ImageColorClosestAlpha($src, $new_r+0, $new_g+0, $new_b+0, $new_a);
}
if (($y >= 0) && ($y < $sy)) {
imagesetpixel($src, $x, $y, $new_pxl);
}
}
}
imagedestroy($srcback);
return true;
}
/***   来自四海网(www.q1010.com)   ***/
php语言图片锐化的三个函数. 执行速度排序, 第一个函数最快. 0.2秒左右. 其它的会慢很多.
功能与作用:
在生成缩略图时, 会令图片非常模糊不清, 这是phpcms, discuz所遇到的问题, 而纵观QQ的缩略图却清晰得多, (可能它用C语言处理了). 这三个函数, 任何一个都可以令图片增加清晰度, 也就是提升锐度,

本文来自:http://www.q1010.com/173/1280-0.html

注:关于PHP 缩略图锐化函数的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:缩略图

您可能感兴趣的文章

  • PHP 图片处理函数类 (水印图,缩略图)[等比例压缩与裁剪压缩]
  • php 从上传的文件创建缩略图的简单示例
  • php 生成缩略图的示例,需要GD2 library
  • php 使用GD创建保持宽高比缩略图的简单示例
  • php 动态生成缩略图并输出显示的简单示例
  • PHP 获取图片的Exif、缩略图的简单示例
  • php 上传图片并生成缩略图的简单示例
  • php 原比例生成缩略图实现方法
  • php 图片生成缩略图函数的简单示例
  • php 生成缩略图的示例
上一篇:php 递归删除非空文件夹示例
下一篇:PHP 调用webservice示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。