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

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

2009-06-17 15:19 148 查看
<script type="text/javascript"><!--
google_ad_client = "pub-4490194096475053";
/* 内容页,300x250,第一屏 */
google_ad_slot = "3685991503";
google_ad_width = 300;
google_ad_height = 250;
// --></script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>

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