iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Exif.js图片旋转怎么修正
  • 839
分享到

Exif.js图片旋转怎么修正

2023-06-29 07:06:02 839人浏览 安东尼
摘要

这篇文章主要介绍“Exif.js图片旋转怎么修正”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Exif.js图片旋转怎么修正”文章能帮助大家解决问题。上传后图片旋转修正测试流程上传 -> ba

这篇文章主要介绍“Exif.js图片旋转怎么修正”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Exif.js图片旋转怎么修正”文章能帮助大家解决问题。

上传后图片旋转修正

测试流程

上传 -> base64展示 -> 获取旋转值 -> 修正 -> 修正后展示 -> 转换blob和file文件供其他功能调用

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name='viewport' content='width=device-width,initial-scale=1.0'>    <title>测试图片旋转</title></head><body><input type="file" id="test" onchange="upload(event)"><hr>图片展示:<img src="" id="img"><hr>旋转值:<div id="rotateval"></div><hr>canvas(旋转修正后):<canvas id="canvas" width="100%" height="80%"></canvas><script src="exif.js"></script><script>    function upload(e) {        var file = e.target.files;        var reader = new FileReader();        reader.onload = function(e) {            var res = reader.result;            document.getElementById("img").setAttribute('src', res);            EXIF.getData(file[0],                function() {                    var Orientation = EXIF.getTag(this, 'Orientation');                    document.getElementById('rotateval').innerHTML = Orientation;                    if (Orientation) {                        var image = new Image();                        image.src = res;                        image.onload = function() {                            var expectWidth = this.naturalWidth;                            var expectHeight = this.naturalHeight;                            if (this.naturalWidth > this.naturalHeight && this.naturalWidth > 800) {                                expectWidth = 800;                                expectHeight = expectWidth * this.naturalHeight / this.naturalWidth;                            } else if (this.naturalHeight > this.naturalWidth && this.naturalHeight > 1200) {                                expectHeight = 1200;                                expectWidth = expectHeight * this.naturalWidth / this.naturalHeight;                            }                            var canvas = document.getElementById("canvas");                            var ctx = canvas.getContext("2d");                            canvas.width = "800px"; //expectWidth;                            canvas.height = expectHeight;                            ctx.drawImage(this, 0, 0, expectWidth, expectHeight);                            switch (Orientation) {                            case 6: //需要顺时针(向左)90度旋转                                rotateImg(this, 'left', canvas);                                break;                            case 8: //需要逆时针(向右)90度旋转                                rotateImg(this, 'right', canvas);                                break;                            case 3: //需要180度旋转                                rotateImg(this, 'right', canvas); //转两次                                rotateImg(this, 'right', canvas);                                break;                            }                            function rotateImg(img, direction, canvas) {                                //alert(img);                                //最小与最大旋转方向,图片旋转4次后回到原方向                                var min_step = 0;                                var max_step = 3;                                //var img = document.getElementById(pid);                                if (img == null) return;                                //img的高度和宽度不能在img元素隐藏后获取,否则会出错                                var height = img.height;                                var width = img.width;                                //var step = img.getAttribute('step');                                var step = 2;                                if (step == null) {                                    step = min_step;                                }                                if (direction == 'right') {                                    step++;                                    //旋转到原位置,即超过最大值                                    step > max_step && (step = min_step);                                } else {                                    step--;                                    step < min_step && (step = max_step);                                }                                //旋转角度以弧度值为参数                                var degree = step * 90 * Math.PI / 180;                                var ctx = canvas.getContext('2d');                                switch (step) {                                case 0:                                    canvas.width = width;                                    canvas.height = height;                                    ctx.drawImage(img, 0, 0);                                    break;                                case 1:                                    canvas.width = height;                                    canvas.height = width;                                    ctx.rotate(degree);                                    ctx.drawImage(img, 0, -height);                                    break;                                case 2:                                    canvas.width = width;                                    canvas.height = height;                                    ctx.rotate(degree);                                    ctx.drawImage(img, -width, -height);                                    break;                                case 3:                                    canvas.width = height;                                    canvas.height = width;                                    ctx.rotate(degree);                                    ctx.drawImage(img, -width, 0);                                    break;                                }                                uploadfile(canvas);                            }                        }                    }                });        }        reader.readAsDataURL(file[0]);    }    function uploadfile(canvas) {        let src = canvas.toDataURL("image/png"); //这里转成的是base64的地址,直接用到img标签的src是可以显示图片的        //转成Blob对象        function dataURItoBlob(dataURI) { //图片转成Buffer            //atob() 方法用于解码使用 base-64 编码的字符串。            //base-64 编码使用方法是 btoa() 。            var byteString = atob(dataURI.split(',')[1]);            var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];            var ab = new ArrayBuffer(byteString.length);            var ia = new Uint8Array(ab);            for (var i = 0; i < byteString.length; i++) {                ia[i] = byteString.charCodeAt(i);            }            return new Blob([ab], { type: mimeString });        }        var blob = dataURItoBlob(src);        console.log('二进制对象:');        console.log(blob);        //转成File对象        function dataURLtoFile(dataurl, filename) {            var arr = dataurl.split(','),                mime = arr[0].match(/:(.*?);/)[1],                bstr = atob(arr[1]),                n = bstr.length,                u8arr = new Uint8Array(n);            while (n--) {                u8arr[n] = bstr.charCodeAt(n);            }            return new File([u8arr], filename, { type: mime });        }        var file_b = dataURLtoFile(src, 'test.png');        var fORMData = new FormData();        var columnName = 'img';        formData.append(columnName, file_b);        formData.append("filetype", file_b.type);        console.log('文件对象:');        console.log(file_b);    }</script></body></html>

解决图片自动旋转问题

exif.js

用于从图像文件中读取EXIF元数据的javascript库。

您可以在浏览器中的图像上使用它,从图像或文件输入元素。
检索EXIF和IPTC元数据。这个包也可以在AMD或CommonJS环境中使用。

注意:EXIF标准仅适用于.jpg.tiff图像。
这个包中的EXIF逻辑基于EXIF标准v2.2 (JEITA CP-3451,包含在这个repo中)。

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title></title>    <script src="./Jquery-1.7.2.min.js"></script>    <script src="./exif.min.js"></script></head><body><img src="1.jpg" id="J-loGo"/><script type="text/javascript">    var getor = function() {        EXIF.getData(document.getElementById("J-logo"),            function() {                var aaa = EXIF.getAllTags(this);                var orp = EXIF.getTag(this, 'Orientation');                if (orp == 1) {                    $("#J-logo").CSS("transform", "rotate(0deg)");                } else if (orp == 3) {                    $("#J-logo").css("transform", "rotate(180deg)");                } else if (orp == 6) {                    $("#J-logo").css("transform", "rotate(90deg)");                } else if (orp == 8) {                    $("#J-logo").css("transform", "rotate(270deg)");                }            });    }    setTimeout('getor()', 1);</script></body></html>

关于“Exif.js图片旋转怎么修正”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Exif.js图片旋转怎么修正

本文链接: https://www.lsjlt.com/news/323255.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Exif.js图片旋转怎么修正
    这篇文章主要介绍“Exif.js图片旋转怎么修正”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Exif.js图片旋转怎么修正”文章能帮助大家解决问题。上传后图片旋转修正测试流程上传 -> ba...
    99+
    2023-06-29
  • Exif.js图片旋转修正的方法
    本文实例为大家分享了Exif.js图片旋转修正的具体方法,供大家参考,具体内容如下 上传后图片旋转修正 测试流程 上传 -> base64展示 -> 获取旋转值 ->...
    99+
    2024-04-02
  • photoshop图片怎么旋转
    这篇文章主要讲解了“photoshop图片怎么旋转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“photoshop图片怎么旋转”吧!ps旋转图片的方法:首先我们点击左上角的“文件”,点击“打...
    99+
    2023-07-01
  • python opencv怎么旋转图片
    本篇内容介绍了“python opencv怎么旋转图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!函数用法(h,w)=img2.shape...
    99+
    2023-06-30
  • css怎么让图片旋转
    小编给大家分享一下css怎么让图片旋转,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css的三种引入方式1.行内样式,最直接最简单的一种,直接对HTML标签使用s...
    99+
    2023-06-14
  • CSS怎么设置图片旋转
    本篇内容主要讲解“CSS怎么设置图片旋转”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS怎么设置图片旋转”吧!具体代码:<!DOCTYPE html><html lang=...
    99+
    2023-06-27
  • css怎么实现图片的旋转
    这篇文章主要介绍了css怎么实现图片的旋转,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   1、构建图像轮播框架   首先是HTML。...
    99+
    2024-04-02
  • python中opencv旋转图片怎么用
    这篇文章将为大家详细讲解有关python中opencv旋转图片怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,...
    99+
    2023-06-15
  • jquery怎么实现查看图片旋转
    在前端开发中,显示和浏览图片是一个常见的需求。有时候我们需要对图片进行旋转,来达到更好的显示效果。在此情况下,我们可以使用 jQuery 库来轻松地实现图片旋转的功能。下面将详细介绍如何使用 jQuery 实现查看图片旋转。一、准备工作首先...
    99+
    2023-05-14
  • Css3怎么实现图片空间旋转
    这篇文章主要介绍了Css3怎么实现图片空间旋转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Css3怎么实现图片空间旋转文章都会有所收获,下面我们一起来看看吧。transfor...
    99+
    2024-04-02
  • vue3怎么实现旋转图片验证
    这篇“vue3怎么实现旋转图片验证”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3怎么实现旋转图片验证”文章吧。一、前...
    99+
    2023-06-30
  • 怎么在html5中利用Canvas旋转图片
    这篇文章给大家介绍怎么在html5中利用Canvas旋转图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。移动canvas原点var img = document.getElementBy...
    99+
    2023-06-09
  • html5怎么实现图片的3D旋转效果
    本篇内容主要讲解“html5怎么实现图片的3D旋转效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么实现图片的3D旋转效果”吧!   完整代码如...
    99+
    2024-04-02
  • 怎么在Android利用Matrix对图片进行旋转
    本篇文章给大家分享的是有关怎么在Android利用Matrix对图片进行旋转,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。自定义一个View,用来控制这两个图片的旋转。com....
    99+
    2023-05-31
    android matrix roi
  • 怎么在python中利用opencv对图片进行旋转
    今天就跟大家聊聊有关怎么在python中利用opencv对图片进行旋转,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译...
    99+
    2023-06-14
  • 怎么使用php代码实现图片旋转方向
    这篇文章主要讲解了“怎么使用php代码实现图片旋转方向”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用php代码实现图片旋转方向”吧!php实现图片旋转方向的代码方法是:1、创建一个p...
    99+
    2023-07-04
  • thinkphp框架中的图片旋转裁剪功能怎么实现
    这篇文章主要讲解了“thinkphp框架中的图片旋转裁剪功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp框架中的图片旋转裁剪功能怎么实现”吧!第一步:安装think...
    99+
    2023-07-06
  • Vue拿到二进制流图片怎么转为正常图片并显示
    这篇文章主要讲解了“Vue拿到二进制流图片怎么转为正常图片并显示”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue拿到二进制流图片怎么转为正常图片并显示”吧!二进制流图片转为正常图片并显示...
    99+
    2023-06-30
  • 怎么通过HTML5 Canvas实现图片的平移及旋转变化
    小编给大家分享一下怎么通过HTML5 Canvas实现图片的平移及旋转变化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!平移变换translate()平移变换,故...
    99+
    2023-06-09
  • 怎么解决BootStrap Fileinput手机图片上传显示旋转问题
    这篇文章主要介绍怎么解决BootStrap Fileinput手机图片上传显示旋转问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近因为项目需要用到了bootstrap file...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作