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

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的图片,详细的文档等等再整理出来.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值