TP 3.2 图片处理类


<?php
namespace Common\Common;
class ImageEdit{ /**
* [上传图片并生成缩略图]
* @param [type] $imgName [图片提交的表单名称]
* @param [type] $dirName [图片上传的二级目录]
* @param array $thumb
* [缩略图生成,一个数组,传几个值生成几个图片]
* @return [type] [description]
*/
static public function uploadOne($imgName, $dirName, $thumb = array())
{
// 上传LOGO
if(isset($_FILES[$imgName]) && $_FILES[$imgName]['error'] == 0)
{
$ic = C('IMAGE_CONFIG');
$upload = new \Think\Upload(array(
'rootPath' => $ic['rootPath'],
'maxSize' => $ic['maxSize'],
'exts' => $ic['exts'],
));// 实例化上传类
$upload->savePath = $dirName . '/'; // 图片二级目录的名称
// 上传时指定一个要上传的图片的名称,否则会把表单中所有的图片都处理,之后再想其他图片时就再找不到图片了
$info = $upload->upload(array($imgName=>$_FILES[$imgName]));
if(!$info)
{
return array(
'ok' => 0,
'error' => $upload->getError(),
);
}
else
{
$ret['ok'] = 1;
$ret['images'][0] = $logoName = $info[$imgName]['savepath'] . $info[$imgName]['savename'];
// 判断是否生成缩略图
if($thumb)
{
$image = new \Think\Image();
// 循环生成缩略图
foreach ($thumb as $k => $v)
{
$ret['images'][$k+1] = $info[$imgName]['savepath'] . 'thumb_'.$k.'_' .$info[$imgName]['savename'];
// 打开要处理的图片
$image->open($ic['rootPath'].$logoName);
$image->thumb($v[0], $v[1])->save($ic['rootPath'].$ret['images'][$k+1]);
}
}
return $ret;
}
}
}
/*******************************************************
* 上传图片并生成缩略图使用方法
* 用法:
* $ret=uploadOne('logo','Goods',array(
* array(600,600),
* array(300,300),
* array(100,100),
*
* ));
* 返回值:
* if($ret['ok']==1){
* $ret['images'][0]; //原图地址
* $ret['images'][1]; //第一个缩略图地址
* $ret['images'][2]; //第二个缩略图地址
* $ret['images'][3]; //第三个缩略图地址
* }else{
* $this->error=$ret['error'];
* return false;
* }
****************************************************/ /**
* [delImage 删除图片函数]
* @param [type] $img [图片文件名数组]
* @return [type] [description]
*/
static public function delImage($img){
foreach ($img as $k => $v) {
unlink(C('IMAGE_CONFIG')['rootPath'].$v);
}
} /**
* [showImage 显示图片函数]
* @param [type] $url [图片名称]
* @param string $width [显示宽度]
* @param string $heigt [显示高度]
* @return [type] [description]
*/
static public function showImage($url,$width='',$height=''){
$pt=C('IMAGE_CONFIG');
if($width)
$width="width='{$width}'";
if($height)
$height="height='{$height}'";
echo "<img $width $height src='{$pt['viewPath']}$url' />";
} }
/********************************************************************
* 图片上传类,多图片上传
* @param [type] $formname [file表单名称]
* @param [type] $dirname [图片上传二级目录]
* @return [type] [description]
*/
static public function uploadM($formname,$dirname){
if(isset($_FILES[$formname])){
$imgconf=C('IMAGE_CONFIG');
$conf=[
'rootPath'=>$imgconf['rootPath'],
'maxSize'=>$imgconf['maxSize'],
'exts'=>$imgconf['exts'],
];
$dir=$imgconf['rootPath'].$dirname;
is_dir($dir)||mkdir($dir,0777,true);
$img=new \Think\Upload($conf);
$img->savePath =$dirname.'/';
$info=$img->upload();
if(!$info){
return ['status'=>'error','message'=>$img->getError()];
}else{
return $res=['status'=>"error",'message'=>'上传成功','data'=>$info];
}
}
}

TP 3.2 图片处理类的更多相关文章

  1. 分享一下怎么开发一款图片视频类App,秒拍和prisma

    第一步,分解短视频App的功能 我们在秒拍官网看到如此描述: [视频拍摄及导入]支持直接拍摄及导入手机本地的视频 [照片电影]照片专属特效,轻松创作照片电影 [MV特效]10余款全新MV特效,让普通视 ...

  2. PHP编写的图片验证码类文件分享方法

    适用于自定义的验证码类! <?php/* * To change this license header, choose License Headers in Project Propertie ...

  3. Java图片工具类,完成图片的截取和任意缩放

    package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Renderin ...

  4. bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...

  5. 拍照、本地图片工具类(兼容至Android7.0)

    拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...

  6. Android--很实用的图片工具类

    import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; imp ...

  7. PHP 图片缩放类

    <?php /** * 图片压缩类:通过缩放来压缩. * 如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数码相机4M图片.也可以缩为700KB左右 ...

  8. Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...

  9. Android 调节图片工具类

    package com.base.changeimage; import android.graphics.Bitmap; import android.graphics.Canvas; import ...

随机推荐

  1. Shell编程—sed和gawk

    1文本处理 1.1sed 编辑器 sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反.在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式地插入.删除或 ...

  2. elementUI的隐藏组件el-scroll--滚动条

    由于原生的滚动条存在兼容性问题并且样式不是太美观,在项目中经常使用的是elementui,发现elementui中有个隐藏的组件,就是element官网使用的滚动条,可以优化滚动条样式.鼠标经过的时候 ...

  3. python实现对列表的增删查修操作

    #定义一个空列表 list_demo=[] #1,向列表中插入元素 def append_demo(): #第一种使用append,可以在列表末尾添加一个函数 for i in range(2): l ...

  4. 建设开发者生态:6项华为API管理原则落地

    摘要: 为了向开发者提供良好.一致.稳定的华为API的体验,华为通过明确“API管理六项原则”,来支持开发者生态建设. 一个不开放的组织,会慢慢成为一潭僵水,一个封闭的系统,能量最终会耗尽,在产品开发 ...

  5. 【亲测】手把手教你如何破解pycharm(附安装包和破解文件)

    此教程支持最新的2019.3版本的Pycharm,并兼容之前的版本. 一.准备工作: 1.下载Pycharm 有条件的可以自行去官网下载,这里我提供了我下载的版本,已上传到百度网盘,链接在下方. 2. ...

  6. Android开发值利用Intent进行put传值,setclass启动activity,并用get进行取值

    传值方法一 [java] Intent intent = new Intent(); Bundle bundle = new Bundle(); //该类用作携带数据 bundle.putString ...

  7. android 数据绑定(5) kotlin 的binding bug

    1.BR找不到,无法自动更新 1.1 描述 https://stackoverflow.com/questions/57983508/android-studio-kotlin-databinding ...

  8. idea 实现远程调试

    使用idea远程调试,需要在服务端启动时,增加JVM参数,开通debug端口 -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,addr ...

  9. JDK15就要来了,你却还不知道JDK8的新特性!

    微信搜「烟雨星空」,白嫖更多好文. 现在 Oracle 官方每隔半年就会出一个 JDK 新版本.按时间来算的话,这个月就要出 JDK15 了.然而,大部分公司还是在使用 JDK7 和 8 . 之前去我 ...

  10. Q200510-02: 重复的DNA序列 程序解法

    问题:  重复的DNA序列 所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”.在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助. 编 ...