php 把大图切成小图类

<?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');


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值