<?php
namespace App\Tools;
use Illuminate\Support\Facades\Storage;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
class Images
{
/**
* [baseAvatar base64图片流上传]
* @param [type] $base64_string [description]
* @return [type] [description]
*/
public static function baseAvatar($base64_string, $user_id = 0, $pathmm = 'useravatar')
{
$base64_string = explode(',', $base64_string); //截取data:image/png;base64, 这个逗号后的字符
if ($base64_string) {
$data = base64_decode($base64_string[1]);
$path = base_path() . '/storage/app/uploads/' . $pathmm . '/' . $user_id . '/';
if (!is_dir($path)) {
mkdir($path, 0777, true);
}
//要保存的文件名 时间+扩展名
$filename = time() . rand(10, 99) . $user_id . '.jpg';
//图片存放路径
$pathback = '/uploads/' . $pathmm . '/' . $user_id . '/';
//返回地址
$filenameBack = $pathback . $filename;
$re = file_put_contents($path . $filename, $data); //写入文件并保存
if ($re) {
return $filenameBack;
}
}
}
/**
* 用户头像上传
* @param type $file
* // 获取文件相关信息
// $originalName = $file->getClientOriginalName(); // 文件原名
// $ext = $file->getClientOriginalExtension(); // 扩展名
// $realPath = $file->getRealPath(); //临时文件的绝对路径
// $type = $file->getClientMimeType(); // image/jpeg
*/
public static function uploadOneCreate($file, $user_id = 0, $pathmm = 'useravatar')
{
$allowed_extensions = ["png", "jpg", "gif"];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
showMsg(1002, '上传成功', '只能上传 png | jpg | gif格式的图片');
}
$photoSize = $file->getClientSize() / (1024 * 1024);
if ($photoSize > 3) {
showMsg(1003, '图片大小不能大于3M');
}
//获取文件的扩展名
$extension = $file->getClientOriginalExtension();
//要保存的文件名 时间+扩展名
$filename = date('Ymd') . '0' . $user_id . '.' . $extension;
//图片存放路径
$path = 'uploads/' . $pathmm . '/' . $user_id . '/';
//返回地址
$filenameBack = '/' . $path . $filename;
$re = Storage::putFileAs($path, $file, $filename);
if ($re) {
return $filenameBack;
}
showMsg(1005, '上传失败', $filenameBack);
}
/**
* 用户上传
* @param type $file
* // 获取文件相关信息
// $originalName = $file->getClientOriginalName(); // 文件原名
// $ext = $file->getClientOriginalExtension(); // 扩展名
// $realPath = $file->getRealPath(); //临时文件的绝对路径
// $type = $file->getClientMimeType(); // image/jpeg
*/
public static function uploadImg($file, $pathmm = 'images')
{
$allowed_extensions = ["png", "jpg", "gif"];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
showMsg(1002, '上传成功', '只能上传 png | jpg | gif格式的图片');
}
$photoSize = $file->getClientSize() / (1024 * 1024);
if ($photoSize > 3) {
showMsg(1003, '图片大小不能大于3M');
}
//获取文件的扩展名
$extension = $file->getClientOriginalExtension();
//要保存的文件名 时间+扩展名
$filename = date('YmdHis') . rand(10, 99) . '.' . $extension;
//图片存放路径
$path = 'uploads/' . $pathmm . '/' . date('Ymd') . '/';
//返回地址
$filenameBack = '/' . $path . $filename;
$re = Storage::putFileAs($path, $file, $filename);
if ($re) {
return $filenameBack;
}
showMsg(1005, '上传失败', $filenameBack);
}
/**
* 用户上传多文件
* @param type $file 上传文件
* @param type $pathmm 上传路径
*/
public static function uploadImgs($file, $pathmm = 'images')
{
// 文件类型白名单
$allowed_extensions = ["png", "jpg", "jpeg", "gif"];
// 声明容器
$list = [];
// 遍历文件数组
for ($i = 0; $i < count($file['name']); $i++) {
# 文件扩展名
$extension = substr(strrchr($file['name'][$i], '.'), 1);
# 文件名称(不带扩展名)
$file_name = basename($file['name'][$i], "." . $extension);
$list[$i]['file_name'] = $file_name;
# 检测文件类型
if ($extension && !in_array($extension, $allowed_extensions)) {
showMsg(1002, '上传失败', '只能上传 png | jpg | jpeg | gif格式的图片');
}
# 检测文件大小
$photoSize = $file['size'][$i] / (1024 * 1024);
if ($photoSize > 3) {
showMsg(1003, '图片大小不能大于3M');
}
# 源文件临时位置路径
$tmp_file_path = $file['tmp_name'][$i];
# 要保存的文件名 时间+扩展名
$filename = date('YmdHis') . rand(10, 99) . '.' . $extension;
# 图片存放路径
$path = 'uploads/' . $pathmm . '/' . date('Ymd') . '/' . $filename;
# 返回地址
$back_path = '/' . $path;
# 保存文件
$save = move_uploaded_file($tmp_file_path, $path);
if ($save) {
$list[$i]['file_path'] = $back_path;
}
}
return $list;
}
/**
* @Author Afree
* @DateTime 2018-04-28
* @copyright [上传文件]
* @license [license]
* @version [version]
* @param [type] $file [description]
* @param integer $user_id [description]
* @return [type] [description]
*/
public static function uploadFile($file, $user_id = 0, $pathmm = 'usermodel')
{
$allowed_extensions = ["xml", "pdf", "doc", "json"];
if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
showMsg(1002, '只能上传 xml | pdf | doc格式的文件', '只能上传 xml | pdf | doc格式的文件');
}
$photoSize = $file->getClientSize() / (1024 * 1024);
if ($photoSize > 3) {
showMsg(1003, '文件大小不能大于3M');
}
//获取文件的扩展名
$extension = $file->getClientOriginalExtension();
//要保存的文件名 时间+扩展名
$filename = date('YmdHis') . rand(10, 99) . '.' . $extension;
//图片存放路径
$path = 'uploads/' . $pathmm . '/' . $user_id . '/';
//返回地址
$filenameBack = '/' . $path . $filename;
$re = Storage::putFileAs($path, $file, $filename);
if ($re) {
return $filenameBack;
}
showMsg(1005, '上传失败', $filenameBack);
}
/**
* [uploadKjson description]
* @param [type] $kjson [description]
* @param [type] $user_id [description]
* @param [type] $order_sn [description]
* @param [type] $name [description]
* @return [type] [description]
*/
public static function uploadKjson($kjson, $user_id, $order_sn, $name)
{
$path = base_path() . '/storage/app/uploads/usermodels/' . $user_id . '/' . $order_sn;
if (!is_dir($path)) {
mkdir($path);
}
$filename = $path . '/' . $order_sn . $name . '.json';
file_put_contents($filename, $content);
}
/**
* 缩略图
* @param type $imagePath
*/
public static function PimageSLPath($imagePath, $xx = 100, $yy = 100)
{
//获取图片信息
list($imgw, $imgh, $imgt, $attr) = getimagesize($imagePath);
//计算缩小的比例,目标最长边缩至150
$percent = $imgw > $imgh ? ($xx / $imgw) : ($yy / $imgh); //以最长边作为缩放参考
if ($percent < 1) {
//计算缩略图的新尺寸
$new_width = floor($imgw * $percent);
$new_height = floor($imgh * $percent);
} else {
//如果原图尺寸小于 150x150 直接输出原图尺寸
$new_width = $imgw;
$new_height = $imgh;
}
$thumb = imagecreatetruecolor($new_width, $new_height);
//读取图片
switch ($imgt) {
//判断格式,图像类型,但缩略图输出的都是jpg..参考下文
case 1:
$orgimg = imagecreatefromgif($imagePath);
break;
case 2:
$orgimg = imagecreatefromjpeg($imagePath);
break;
case 3:
$orgimg = imagecreatefrompng($imagePath);
break;
}
//imagecopyresampled(缩略图片资源, 源图片资源, dx, dy, sx,sy, 新图像宽度, 新图像高度, 源图像宽度, 源图像高度);
imagecopyresampled($thumb, $orgimg, 0, 0, 0, 0, $new_width, $new_height, $imgw, $imgh); //缩放核心函数
imagejpeg($thumb, $imagePath, 90); //输出图像
//销毁资源
imagedestroy($thumb);
imagedestroy($orgimg);
}
}
网友评论