前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

Posted qdcnbj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端手势控制图片插件书写四(图片上传及Ios图片方向问题)相关的知识,希望对你有一定的参考价值。

1、在图片上传中,使用的input的type为File的属性。使用filereader的Api
let that = this;
var file = document.getElementById("file").files[0];
console.log(document.getElementById("file").files);
if(!/image\/\w+/.test(file.type))
console.error("看清楚,这个需要图片!");
return false;

var reader = new FileReader();
//将文件以Data URL形式读入页面
reader.readAsDataURL(file);
reader.onload=function(e)
console.log(e.target.result.length)

 

 
2、在ios竖着拍的图片中在canvas画布上初始绘制时会出现顺时针旋转90度的问题。
这是因为ios系统在竖着拍照的时候图片信息中的图片方向Orientation为6导致的问题,这里可以使用exif插件可以获取到图片的Orientation,如果为6我们需要做特殊处理。
let orientation = that.getPhotoOrientation(document.querySelector(‘.div_bg_img‘));
 if (orientation == 6 && flag == true)
     ctx.rotate(90 * Math.PI / 180);
    ctx.translate(0, -width * this.imageQuality);
      ctx.drawImage(pure_img, 0, 0, height * this.imageQuality, width * this.imageQuality);
 

 

 
3、图片质量问题。
在canvas中,图片质量由画布的大小来控制,我们在应用中只有保持画布的大小和css样式的大小成比例即可。否则会变形。如果想要图片质量高,画布可以设置大一些。
var bgcanvas = document.getElementById(‘canvas‘);
var ctx = bgcanvas.getContext(‘2d‘);
let canvas_outer = document.getElementById(‘canvas_outer‘);
let canvasOuter = canvas_outer.getBoundingClientRect();
bgcanvas.height = canvasOuter.height * this.imageQuality;
bgcanvas.width = canvasOuter.width * this.imageQuality;

 

 
4、然后使用toDataUrl()方法即可生成base64码。
 

以上是关于前端手势控制图片插件书写四(图片上传及Ios图片方向问题)的主要内容,如果未能解决你的问题,请参考以下文章

前端手势控制图片插件书写二

前端手势控制图片插件书写五(添加贴纸功能)

vuejs开发组件分享之H5图片上传压缩及拍照旋转的问题处理

前端怎么实现点击图片将图片放大而且图片可以手势随意缩放,最好附上代码,非常感谢

前端 仿移动端时间插件,百度上传图片插件,监听滚动插入内容

接收IOS上传的图片