TP 3.2 图片处理类
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 图片处理类的更多相关文章
- 分享一下怎么开发一款图片视频类App,秒拍和prisma
第一步,分解短视频App的功能 我们在秒拍官网看到如此描述: [视频拍摄及导入]支持直接拍摄及导入手机本地的视频 [照片电影]照片专属特效,轻松创作照片电影 [MV特效]10余款全新MV特效,让普通视 ...
- PHP编写的图片验证码类文件分享方法
适用于自定义的验证码类! <?php/* * To change this license header, choose License Headers in Project Propertie ...
- Java图片工具类,完成图片的截取和任意缩放
package com.common.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Renderin ...
- bootstrap-wysiwyg 结合 base64 解码 .net bbs 图片操作类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- 拍照、本地图片工具类(兼容至Android7.0)
拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...
- Android--很实用的图片工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; imp ...
- PHP 图片缩放类
<?php /** * 图片压缩类:通过缩放来压缩. * 如果要保持源图比例,把参数$percent保持为1即可. * 即使原比例压缩,也可大幅度缩小.数码相机4M图片.也可以缩为700KB左右 ...
- Android Handler 异步消息处理机制的妙用 创建强大的图片载入类
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...
- Android 调节图片工具类
package com.base.changeimage; import android.graphics.Bitmap; import android.graphics.Canvas; import ...
随机推荐
- jQuery源码分析系列(二)Sizzle选择器引擎-上
前言 我们继续从init()方法中的find()方法往下看, jQuery.find = Sizzle; ... find: function (selector) { /** ... */ ret ...
- 什么是URL标准化
http://www.wocaoseo.com/thread-194-1-1.html RL标准化是来自于国外matt cutts的博客文章,期望能给蜘蛛一个规范化的URL作为收录的标准.举个简单的例 ...
- 焦大:做seo需要的三心二意
http://www.wocaoseo.com/thread-92-1-1.html 读过一些外国人写的教程之后,愈发觉得国外人写的教程甚是有趣,比起国内学习的课本来,真是不可同日而语. ...
- Appium框架
1.通过TestNG单元测试框架管理/执行测试用例 2.TestNG参数化,App启动的四个配置存到Testng.xml中 3.通过page object (PO)设计模式,测试用例和页面元素分离,页 ...
- python IDE(集成开发环境)——PyCharm的安装
选择PyCharm的原因: 1.很多大佬都推荐,说适合实战操作项目 2.另外是界面可视化不错,颜色很舒服(体验完之后的感觉) 3.PyCharm本身有很多操作快捷键很方便(后续可以记下来常用的,方便自 ...
- Auto Generate Reflection Information for C++
https://www.reddit.com/r/gamedev/comments/3lh0ba/using_clang_to_generate_c_reflection_data/ https:// ...
- 利用递归方法实现链表反转、前N个节点反转以及中间部分节点反转
一.反转整个链表 问题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5-&g ...
- Istio 的配置分析
Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...
- HashMap源码解析、jdk7和8之后的区别、相关问题分析(多线程扩容带来的死循环)
一.概览 HashMap<String, Integer> map = new HashMap<>(); 这个语句执行起来,在 jdk1.8 之前,会创建一个长度是 16 的 ...
- 【BZOJ3453】XLkxc
http://192.168.102.138/JudgeOnline/problem.php?id=3170 知识点:1.拉格朗日插值(多特殊函数相加) 2.这个式子看似非常复杂,然而只要明白这个式子 ...