<?php
namespace app\myclass;
/**
* Created by PhpStorm.
* User: Administrator
* Date: 14-3-26
* Time: 下午6:31
*/
//处理图像分割8等分,每等份加链接
class dopic {
private $path; //大图路径
private $filename; //大图名字
private $newpath = './crack'; //新的小图存放目录
public $exNum = array(1,2,3,4,5,6,7,8,9,10); //每等份图的名字
public function __construct ($path,$filename) {
ini_set( 'memory_limit', '220M' );
$this->path = $path;
$this->filename = $filename;
}
//分割图片8等份
public function explodepic () {
$file =$this->path.$this->filename; //大图文件地址
$filePre = explode('.', $this->filename); //获取大图文件名
$this->create_dir($this->newpath); //创建小图存放路径
$ext = $this->getExt($this->filename);
//获取大图的尺寸
list($width, $height, $type, $attr) = getimagesize($file);
//算出每等份尺寸,
//不被整除,保证不留白
$minW = $width;
$minHx = ceil ($height / count($this->exNum));
//分别截取出小图
$bigpic = imagecreatefromjpeg($file);
$smallpic = imagecreatetruecolor($minW, $minHx); //新建一个图像
for ($i = 0; $i < count($this->exNum); $i++) {
if ($i == (count($this->exNum)-1)) {
$minH = $height - $minHx * $i;
$smallpic = imagecreatetruecolor($minW, $minH); //新建一个图像
} else {
$minH = $minHx;
}
imagecopy($smallpic, $bigpic ,0,0,0,($i*$minHx), $minW, $minH); //复制图像一部分
imagejpeg($smallpic, $this->newpath.'/'.$this->newName().'-'.$this->exNum[$i].'.jpg',100); //输出小图
$newfile[]=$this->newpath.'/'.$this->newName().'-'.$this->exNum[$i].'.jpg';
}
return $newfile;
}
//生成文件名称
public function newName(){
//生成随机文件名
$hash = "CRACK-";
//定义一个包含大小写字母数字的字符串
$chars = "123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";
//把字符串分割成数组
$nchars = str_split($chars);
//打乱数组
shuffle($nchars);
//从数组中随机取出15个字符
$chars_key = array_rand($nchars,15);
//把取出的元素重新组成字符串
for ($i=0; $i < 15; $i++) {
$fchar .= $nchars[$chars_key[$i]];
}
return $hash.md5($fchar.time().microtime()*1000000);
}
//获取文件名部分
public function getfilename ($filename) {
$res = explode('.', $filename);
return $res[0];
}
//创建目录
public function create_dir($dir){
return is_dir($dir) or (self::create_dir(dirname($dir)) and mkdir($dir, 0777));
}
/**
*函数:getExt()
*@param:$filename文件名称
*@return:返回上传文件的扩展名称
*/
public function getExt($filename){
$array = explode('.', $filename);
$ext = array_pop($array);
return strtolower($ext);
}
/**
* @desc 保存生成的图片
* @access private setPic()
* @param $imgSource 图像的资源
* @param $path 要保存的图片路径地址和名称
* @param $ext 要保存路径的扩展名称
*/
private function setPic($imgSource, $path, $ext){
switch (strtolower($ext)){
case 'jpg':
case 'jpeg':
return imagejpeg($imgSource,$path);
break;
case 'gif' :
return imagegif($imgSource, $path);
break;
case 'png' :
return imagepng($imgSource, $path);
break;
default :
$this->getErrorInfo("暂不支持你的扩展名称,请尝试jpg,gif,png");
}
}
}
$res = new dopic('./','2021.jpg');
$newfile = $res->explodepic();
// $_SESSION['url'] = 'http://'.$_SERVER['HTTP_HOST'].$html;
// header('Location:index.php');
php 把大图切成小图类
最新推荐文章于 2023-12-05 14:13:11 发布