热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【裁剪,预览,上传】图片处理

整个过程分为三个部分【选择,预览图片】【裁剪】【发送到服务器】 一、选择,预览图片思路:input[typefile]来触发选择,监听input的change事件,和H5的属性来获

整个过程分为三个部分【选择,预览图片】【裁剪】【发送到服务器】

 


一、选择,预览图片

思路:input[type=file]来触发选择,监听input的change事件,和H5的属性来获得url,通过url将img_dom append进来

代码:

$("#inputs").on('change', function(e) {
var files;
var file;
files
= $(this).prop('files');
if (files.length > 0) {
file
= files[0];
if (isImageFile(file)) {
if (this.url) {
URL.revokeObjectURL(
this.url);
}
console.log(URL);
this.url = URL.createObjectURL(file);
this.$img = $('');
$(
"#PhotoView").empty().html(this.$img);
}
}
})

 


 二、裁剪

思路:裁剪采用的插件cropper.js

代码:

var avatar188;

var avatar120;

var $previews = $('.preview');
var companyName;
var companyCoor;
var companyAddr;
var CompanyType = 1;
var lastLogoType = 1;
var localLogoPath;
var logofileType = 1;//1代表默认logo 2代表用户上传 默认1


this
.$img.cropper({
viewMode :
1,
dragMode :
'move',
autoCropArea :
0.9,
aspectRatio :
1.0,
restore :
false,
guides :
false,
highlight :
false,
cropBoxMovable :
false,
cropBoxResizable :
false,
build :
function(e) {
var $clOne= $(this).clone();
$previews.html($clone);
},
crop :
function(e) {
var imageData = $(this).cropper('getImageData');
var previewAspectRatio = e.width / e.height;
//调节preview
$previews.each(function() {
var $preview = $(this);
var previewWidth = $preview.width();
var previewHeight = previewWidth / previewAspectRatio;
var imageScaledRatio = e.width / previewWidth;
$preview.height(previewHeight).find(
'img').css({
width : imageData.naturalWidth
/ imageScaledRatio,
height : imageData.naturalHeight
/ imageScaledRatio,
marginLeft :
-e.x / imageScaledRatio,
marginTop :
-e.y / imageScaledRatio
});
});
//保存图片
avatar188 = $(this).cropper('getCroppedCanvas', {
width :
188,
height :
188
});
avatar120
= $(this).cropper('getCroppedCanvas', {
width :
120,
height :
120
});
logofileType
= 2;
}
});

 


 三、预处理,上传

思路:上传前,需要将URL转化为二进制流,然后在封装进H5的FORM对象中,提交到服务器才能被识别

代码:

function isImageFile(file) {
if (file.type) {
return /^image\/\w+$/.test(file.type);
}
else {
return /\.(jpg|jpeg|png)$/.test(file);
}
}
//url 转化成blob二进制数据流
function dataURLToBlob(dataURL){
var byteString = atob(dataURL.split(',')[1]);
var mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for(var i = 0;i){
ia[i] = byteString.charCodeAt(i);
}
var blob = new Blob([ab],{type:mimeString});
return blob;
}

 

 

//post headImage to server
function postImage(vm){
//图片数据处理
var canvas = avatar188.toDataURL("image/png");
var imgfile = dataURLToBlob(canvas);
var Form = new FormData();
Form.append(
'pictureFile',imgfile);
Form.append(
'body',1);
$.ajax({
url:path_
+'/picServerCtrl/uploadPicture',
type:
'post',
dataType:
'json',
contentType:
'multipart/form-data',
data:Form,
success :
function(res){
if(res.status){
zuiMessager(res.message);
addStaff.addStaffForm.headPicUrl
=res.result.netWorkPath;
closeAllSwitch();
vm.showForm
=true;
}
},
cache:
false,
contentType:
false,
processData:
false,
});
}

 



推荐阅读
  • vue使用
    关键词: ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有