PHP自适应宽高度等比例缩略图函数 (无裁切)
来源:互联网 发布:apache mac 编辑:程序博客网 时间:2024/05/22 07:05
对于产品类或者图片类网站来说,缩略图是一个很重要的应用。其实说来很简单,也就是把大图缩放成一个小图,用于图片的列表展示,这样可以达到用户快速浏览的目的,又能节省带宽。
如果是等比例缩放,比如小图是大图的1/2或者1/5之类的,比较容易处理。但有时候我们需要处理大量不同尺寸的大图,让其生成固定宽高度的缩略图。那就需要一种自适应的方式缩放,就是大图在缩放的过程中,如果宽度先达到缩略图的宽度,那大图多余的高度就被裁剪掉;如果高度先达到缩略图的高度,那大图多余的宽度就被裁剪掉。这样处理既让缩略图不失真变形,又能最大化保留大图内容。
今天用PHP写了一个缩略图函数,可以达到这种自适应的等比例缩放效果。
<?php
/*
缩略图函数
作者:影子超
博客:www.shadowchao.com
邮箱:superl3c@gmail.com
参数说明:
$w ---------- 缩略图宽度
$h ---------- 缩略图高度
$dst_path --- 缩略图路径
$src_path --- 源图像路径
*/
function zoom_image($w,$h,$dst_path,$src_path){
if(!file_exists($src_path)){
die("源图像文件未找到!");
}
list($src_w,$src_h,$src_type)=getimagesize($src_path);
switch($src_type){
case 1:$src_im=@imagecreatefromgif($src_path);break;
case 2:$src_im=@imagecreatefromjpeg($src_path);break;
case 3:$src_im=@imagecreatefrompng($src_path);break;
default:die("不能识别的图像类型!");
}
$dst_im=@imagecreatetruecolor($w,$h);
$scale_w=$src_w/$w;
$scale_h=$src_h/$h;
if($scale_w>$scale_h){
$src_w=$scale_h*$w;
}else{
$src_h=$scale_w*$h;
}
imagecopyresampled($dst_im,$src_im,0,0,0,0,$w,$h,$src_w,$src_h);
switch($src_type){
case 1:imagegif($dst_im,$dst_path,80);break;
case 2:imagejpeg($dst_im,$dst_path,80);break;
case 3:imagepng($dst_im,$dst_path,80);break;
}
imagedestroy($dst_im);
imagedestroy($src_im);
}
?>
函数共有4个参数,分别是你想生成的缩略图的宽度、高度、存储的路径以及大图的文件地址(可以是URL地址^_^)
调用方式如:zoom_image(100,100,"abc_small.jpg","abc_big.jpg"),调用无返回,直接将处理后的小图存放在指定路径下。
//生成缩略图(带裁切)
function thum_img($img,$small_img){
$thumb = imagecreatetruecolor(100, 100);
$bg = imagecolorallocate($thumb, 255, 255, 255);
imagefilledrectangle($thumb, 0, 0, 100, 100, $bg);
$i = 0;
$j1 = $j2 = 190;
$imgarr = getimagesize($img);
if($imgarr['0']>$imgarr['1']){
$j1 = $imgarr['0']/($imgarr['1']/$j2);
$i = ceil(($j2-$j1)/2);
}elseif($imgarr['0']<=$imgarr['1']){
$j2 = $imgarr['1']/($imgarr['0']/$j2);
}
if($imgarr['mime']=='image/gif'){
$source = imagecreatefromgif($img);
}elseif($imgarr['mime']=='image/jpeg'){
$source = imagecreatefromjpeg($img);
}elseif($imgarr['mime']=='image/png'){
$source = imagecreatefrompng($img);
}elseif($imgarr['mime']=='image/bmp'){
$source = imagecreatefromwbmp($img);
}
imagecopyresampled($thumb, $source, $i, 0, 0, 0, $j1, $j2, $imgarr[0], $imgarr[1]);
return imagejpeg($thumb,$small_img);
}
- PHP自适应宽高度等比例缩略图函数 (无裁切)
- php 等比例缩略图
- php 等比例生成缩略图
- PHP等比例生成缩略图
- PHP获取图片等比例高度
- PHP图片处理函数 类 (水印图,缩略图)[关于等比例压缩与裁剪压缩]
- PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。
- PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。
- php上传图片和等比例缩略图图片的例子
- php实现上传图片和等比例缩略图压缩图片
- php实现等比例生成图片缩略图不失真
- 图片等比例自适应
- ImageView定宽,高度等比例放大
- img制作等比例缩略图
- 图片等比例缩略图js
- 上传缩略图,等比例压缩
- 等比例缩略图不失真
- java实现等比例缩略图
- JSON在PHP中的应用(跨域的数据调用)
- Database(map的妙用) - uva 1592
- js,php,asp中的html编码解码
- 【引用】asp代码过滤包括空格
- 面试整理——数据库篇
- PHP自适应宽高度等比例缩略图函数 (无裁切)
- 跨站用asp实现数据提交检测
- php根据源url获取主机名,协议名总结
- ASP动态网页下UTF-8页面乱码+GB2312转UTF-8 +生成UTF-8格式的文件(编码)
- js获取当前url参数
- 自动更新ssi页面的思路汇总
- 视频接口
- 架构相关知识,先转下,以后用的着再说
- 【引用】基于 PHP & MySQL 搭建OAuth Server