php 简单图片缩放.新人寻帮助. 现在有图片$pic地址.限制宽度按比例缩小.保存新图片.输出$newpic地址可设定新图片宽度.缩小不失真.请大家帮忙.图片格式为jpg,png, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GD2+用imagecopyresampled,否则用imagecopyresized手册有例子。。不失真不可能 以下是我使用的图片缩小函数,是原图片缩小的,你可以改下变成生成新图片//生成指定大小图片function creat_new_img($img_folder,$w = 60,$h = 60){ //获得图片属性,宽度高度类型 $data = getimagesize($img_folder); //生成图像句柄 $im = _creat_img($data[2],$img_folder); if($im == "")return false; //获取图像宽度和高度 $img_w = $data[0]; $img_h = $data[1]; //建立新的缩略图片 $new_img = _creat_im($im,$w,$h,$img_w,$img_h); switch ($data[2]) { case 1: imagegif($new_img,$img_folder,90); break; case 2: imagejpeg($new_img,$img_folder,90); break; case 3: imagepng($new_img,$img_folder,9); break; default: imagejpeg($new_img,$img_folder,90); } imagedestroy($im);}//生成对应图片类型的新图片function _creat_img($type,$img){ //生成对应图片类型的新图片 switch($type) { //取得水印图片的格式 case 1: //建立相对应格式的图片 $im = imagecreatefromgif($img); break; case 2: $im = imagecreatefromjpeg($img); break; case 3: $im = imagecreatefrompng($img); break; default: return ""; break; } return $im;}//将源图按新目标尺寸生成新图返回function _creat_im($src_im,$dstW,$dstH,$srcW,$srcH){ $dst_im=imagecreatetruecolor($dstW,$dstH); imagealphablending($dst_im,false);//为了生成透明背景,取消默认的混色模式 imagesavealpha($dst_im,true);//为了生成透明背景,设定保存完整的 alpha 通道信息 imagecopyresized($dst_im,$src_im,0,0,0,0,$dstW,$dstH,$srcW,$srcH); return $dst_im;} 楼上老大 没有php基础 基本属于不懂 再麻烦您一下 给我直接可以用的 不需要水印. 这个没有水印,那个注释是我把加水印的函数修改后忘记删除了注释再给你调用方法copy($oldimage,$newimage);//将图片复制成一个新的图片,这个新图片就是你缩小后的图片creat_new_img($newimage,60,60);//缩小图片 用开源图像库wideimage就好啦,对图片处理功能丰富,使用简单,也带有demo。 谢谢 jzh2004 有点感觉了 我具体用上试一下再回复 PHP生成缩略图的原理是使用GD库和imagecopyresized函数将一幅图像中的一块正方形区域拷贝到另一个图像中,PHP生成缩略图的原理参见:http://www.beijibear.com/index.php?aid=198 copy一个小图的我认为不好如果你E文还行的话搜索php class resize image on the fly 返回两个数组的交集 PHP实现后台运行 if($abc)和 if(empty($abc))的意思 Apache2.2.8+PHP5.2.6 启动时提示Unable to load dynamic library PHP获取UTF-8编码字符串(不要中文) php事務處理 mysql5的问题 怎么调试不成功 PHP,21世纪的霸主 简单正则替换 有关数字替换问题,求救!急! Warning: Parameter 1 to Notice::onPrint() expected
手册有例子。。不失真不可能
function creat_new_img($img_folder,$w = 60,$h = 60)
{
//获得图片属性,宽度高度类型
$data = getimagesize($img_folder);
//生成图像句柄
$im = _creat_img($data[2],$img_folder);
if($im == "")return false;
//获取图像宽度和高度
$img_w = $data[0];
$img_h = $data[1];
//建立新的缩略图片
$new_img = _creat_im($im,$w,$h,$img_w,$img_h);
switch ($data[2])
{
case 1:
imagegif($new_img,$img_folder,90);
break;
case 2:
imagejpeg($new_img,$img_folder,90);
break;
case 3:
imagepng($new_img,$img_folder,9);
break;
default:
imagejpeg($new_img,$img_folder,90);
}
imagedestroy($im);
}
//生成对应图片类型的新图片
function _creat_img($type,$img)
{ //生成对应图片类型的新图片
switch($type)
{ //取得水印图片的格式
case 1: //建立相对应格式的图片
$im = imagecreatefromgif($img);
break;
case 2:
$im = imagecreatefromjpeg($img);
break;
case 3:
$im = imagecreatefrompng($img);
break;
default:
return "";
break;
}
return $im;
}
//将源图按新目标尺寸生成新图返回
function _creat_im($src_im,$dstW,$dstH,$srcW,$srcH)
{
$dst_im=imagecreatetruecolor($dstW,$dstH);
imagealphablending($dst_im,false);//为了生成透明背景,取消默认的混色模式
imagesavealpha($dst_im,true);//为了生成透明背景,设定保存完整的 alpha 通道信息
imagecopyresized($dst_im,$src_im,0,0,0,0,$dstW,$dstH,$srcW,$srcH);
return $dst_im;
}
再给你调用方法
copy($oldimage,$newimage);//将图片复制成一个新的图片,这个新图片就是你缩小后的图片
creat_new_img($newimage,60,60);//缩小图片
如果你E文还行的话搜索php class resize image on the fly