您的位置:首页 > 编程语言 > PHP开发

PHP+GD把一副大图切割成指定大小的小图

2006-02-22 13:24 381 查看
GD库具有强大的图片处理功能,这里利用PHP+GD切割图片.

<?php
$maxW=300;
$maxH=300;
$link= "sz.jpg";//图片路径
$img = imagecreatefromjpeg($link);
list($width, $height, $type, $attr) = getimagesize($link);
$widthnum=ceil($width/$maxW);
$heightnum=ceil($height/$maxH);
$iOut = imagecreatetruecolor ($maxW,$maxH); 
//bool imagecopy ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h )
//将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

for ($i=0;$i < $heightnum;$i++) {
 for ($j=0;$j < $widthnum;$j++) {
 imagecopy($iOut,$img,0,0,($j*$maxW),($i*$maxH),$maxW,$maxH);//复制图片的一部分
 imagejpeg($iOut,"images/".$i."_".$j.".jpg"); //输出成0_0.jpg,0_1.jpg这样的格式
 }
}
?>

注意:

如果出现"Fatal error: Allowed memory size of XXXXXX bytes exhausted at (null):0 (tried to allocate XXXX bytes)"等出错提示,就表示php分配的内存不足,需要修改php.ini的memory_limit,把它调大.需要调到几大呢?处理jpg来说,一般jpg的压缩比为10:1左右,如果有一张图片是0.5M的话,就大概需要5M的内存才能处理这张图片.

如果需要出来一些大图片的话,可能GD就不是最佳的方案了.发现有个软件ImageMagick,试用了一些,可以处理我那张30多M的图片,详细的文档等等再整理出来.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php dst im 文档 list null