<?
php
/* *
* 将大图片自动切割成一定比例的小图片
* 并按照一定规则给小图片命名
*
* 使用方法:
* 先拷贝大图片到init文件夹下 命名为 1.jpg , 2.jpg .....
* 浏览器输入地址 img.php
* 生成小图片于文件夹 temp/zoom1,temp/zoom2.... 下面
*
* 注:需要GD2支持
* 作者:阿义
*/
header ( " Cache-Control:no-cache,must-revalidate " ); // 不使用缓存
//要切割的图片
if ( isset ( $_GET [ ' flag ' ])) {
$flag = $_GET [ ' flag ' ];
} else {
$flag = 1 ;
}
$filename = " init/ " . $flag . " .jpg " ; // 大图文件
$tempdir = " temp/zoom " . $flag ; // 小图存放目录
//判断文件是否存在 不存在就切割完毕
if ( ! file_exists ( $filename )){
if ( $flag == 1 ){
exit ( ' <p align=center>请确认大图是否位于map/init 下并命名为 1.jpg,2.jpg.......</p> ' );
} else {
exit ( ' <p align=center>图片切割完毕</p> ' );
}
} else {
if ( ! file_exists ( $tempdir )) mkdir ( $tempdir );
echo " <p align=center>正在切割第 " . $flag . " 张大图</p> " ;
}
/* ****************************************************************** */
$picW = 256 ; // 切割小图的宽
$picH = 256 ; // 切割小图的高
ini_set ( ' memory_limit ' , ' 220M ' ); // 为支持大图片增加内存限制
/* ****************************************************************** */
// 获取大图片的属性
list ( $width , $height , $type , $attr ) = getimagesize ( $filename );
// 从$filename创建一新图像
$image = imagecreatefromjpeg( $filename );
// 循环截取大图中的每一部分,生成小图
for ( $i = 0 ; $i < ceil ( $width / $picW ); $i ++ ){
for ( $j = 0 ; $j < ceil ( $height / $picH ); $j ++ ){
$im = @imagecreatetruecolor( $picW , $picH ) or die ( " Cannot Initialize new GD image stream " ); // 创建小图像
$colBG = imagecolorallocate( $im , 255 , 255 , 255 ); // 白色背景
imagefill( $im , 0 , 0 , $colBG ); // 加白色背景
$picX = ( $picW * ( $i + 1 )) < $width ? $picW : ( $picW + $width - $picW * ( $i + 1 )); // 获取截取图片的宽度
$picY = ( $picH * ( $j + 1 )) < $height ? $picH : ( $picH + $height - $picH * ( $j + 1 )); // 获取截取图片的高度
imagecopy ( $im , $image , 0 , 0 , ( $picW * $i ) , ( $picH * $j ) , $picX , $picY ); // 拷贝大图片的一部分到小图片
imagejpeg( $im , $tempdir . " / " . $j . " , " . $i . " .jpg " , 75 ); // 创建小图片到磁盘,输出质量为75(0~100)
}
}
imagedestroy( $im ); // 释放与 $im 关联的内存
imagedestroy( $image ); // 释放与 $image 关联的内存
//跳转到下一张大图
echo " <script language='JavaScript'>window.location.href='img.php?flag= " . ( $flag + 1 ) . " '</script> " ;
?>
/* *
* 将大图片自动切割成一定比例的小图片
* 并按照一定规则给小图片命名
*
* 使用方法:
* 先拷贝大图片到init文件夹下 命名为 1.jpg , 2.jpg .....
* 浏览器输入地址 img.php
* 生成小图片于文件夹 temp/zoom1,temp/zoom2.... 下面
*
* 注:需要GD2支持
* 作者:阿义
*/
header ( " Cache-Control:no-cache,must-revalidate " ); // 不使用缓存
//要切割的图片
if ( isset ( $_GET [ ' flag ' ])) {
$flag = $_GET [ ' flag ' ];
} else {
$flag = 1 ;
}
$filename = " init/ " . $flag . " .jpg " ; // 大图文件
$tempdir = " temp/zoom " . $flag ; // 小图存放目录
//判断文件是否存在 不存在就切割完毕
if ( ! file_exists ( $filename )){
if ( $flag == 1 ){
exit ( ' <p align=center>请确认大图是否位于map/init 下并命名为 1.jpg,2.jpg.......</p> ' );
} else {
exit ( ' <p align=center>图片切割完毕</p> ' );
}
} else {
if ( ! file_exists ( $tempdir )) mkdir ( $tempdir );
echo " <p align=center>正在切割第 " . $flag . " 张大图</p> " ;
}
/* ****************************************************************** */
$picW = 256 ; // 切割小图的宽
$picH = 256 ; // 切割小图的高
ini_set ( ' memory_limit ' , ' 220M ' ); // 为支持大图片增加内存限制
/* ****************************************************************** */
// 获取大图片的属性
list ( $width , $height , $type , $attr ) = getimagesize ( $filename );
// 从$filename创建一新图像
$image = imagecreatefromjpeg( $filename );
// 循环截取大图中的每一部分,生成小图
for ( $i = 0 ; $i < ceil ( $width / $picW ); $i ++ ){
for ( $j = 0 ; $j < ceil ( $height / $picH ); $j ++ ){
$im = @imagecreatetruecolor( $picW , $picH ) or die ( " Cannot Initialize new GD image stream " ); // 创建小图像
$colBG = imagecolorallocate( $im , 255 , 255 , 255 ); // 白色背景
imagefill( $im , 0 , 0 , $colBG ); // 加白色背景
$picX = ( $picW * ( $i + 1 )) < $width ? $picW : ( $picW + $width - $picW * ( $i + 1 )); // 获取截取图片的宽度
$picY = ( $picH * ( $j + 1 )) < $height ? $picH : ( $picH + $height - $picH * ( $j + 1 )); // 获取截取图片的高度
imagecopy ( $im , $image , 0 , 0 , ( $picW * $i ) , ( $picH * $j ) , $picX , $picY ); // 拷贝大图片的一部分到小图片
imagejpeg( $im , $tempdir . " / " . $j . " , " . $i . " .jpg " , 75 ); // 创建小图片到磁盘,输出质量为75(0~100)
}
}
imagedestroy( $im ); // 释放与 $im 关联的内存
imagedestroy( $image ); // 释放与 $image 关联的内存
//跳转到下一张大图
echo " <script language='JavaScript'>window.location.href='img.php?flag= " . ( $flag + 1 ) . " '</script> " ;
?>