[js] 写一个方法获取图片的方向

[js] 写一个方法获取图片的方向

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="description" content=""><meta name="viewport" content="width=device-width, initial-scale=1"><title></title>
<script>
function getOrientation(file, callback) {
var reader = new FileReader();
reader.onload = function(e) {var view = new DataView(e.target.result);
if (view.getUint16(0, false) != 0xFFD8)
{
return callback(-2);
}
var length = view.byteLength, offset = 2;
while (offset < length)
{
if (view.getUint16(offset+2, false) <= 8) return callback(-1);
var marker = view.getUint16(offset, false);
offset += 2;
if (marker == 0xFFE1)
{
if (view.getUint32(offset += 2, false) != 0x45786966)
{
return callback(-1);
}var little = view.getUint16(offset += 6, false) == 0x4949;
offset += view.getUint32(offset + 4, little);
var tags = view.getUint16(offset, little);
offset += 2;
for (var i = 0; i < tags; i++)
{
if (view.getUint16(offset + (i * 12), little) == 0x0112)
{
return callback(view.getUint16(offset + (i * 12) + 8, little));
}
}
}
else if ((marker & 0xFF00) != 0xFF00)
{
break;
}
else
{
offset += view.getUint16(offset, false);
}
}
return callback(-1);
};
reader.readAsArrayBuffer(file);
}
window.onload = function(){
var input = document.getElementById('input');
input.onchange = function(e) {
getOrientation(input.files[0], function(orientation) {
alert('orientation: ' + orientation);
});
}
};
</script>
</head>
<body>
<input id='input' type='file' />
</body>
</html>

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集群部署中解决定时任务重复执行的问题-redis分布式锁应用

背景描述 有小伙伴私信我&#xff0c;关于存在定时任务的项目在集群环境下部署如何解决重复执行的问题&#xff0c;PS&#xff1a;定时任务没有单独拆分。 概述&#xff1a;之前的项目都是单机器部署&#xff0c;所以定时任务不会重复消费&#xff0c;只会执行一次。而在集群…

[js] 在设置keyup监听事件后按F5刷新和按浏览器中刷新键刷新有什么区别?

[js] 在设置keyup监听事件后按F5刷新和按浏览器中刷新键刷新有什么区别&#xff1f; 按浏览器中刷新键刷新不会触发keyup事件个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

洛达检测软件AB1562UT_1.4.4新版本下载,适用洛达全系列

络达芯片检测调试工具&#xff0c;2020年12月发布的版本&#xff0c;仅支持Android系统手机&#xff1b; 适用于AB1536U,1562A,1562M,1562F。不是络达芯片的不能用&#xff01; 真洛达推荐链接&#xff1a;https://item.taobao.com/item.htm?ftt&id641479139773 一、软件…

[js] 用js写一个方法检测浏览器是否支持css3的属性

[js] 用js写一个方法检测浏览器是否支持css3的属性 var div document.createElement(div); console.log(div.style.transition); //如果支持的话, 会输出 "" //如果不支持的话, 会输出 undefined.个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃…

支付宝新版SDK-PC扫码支付-手机浏览器H5支付

一、前言 支付宝支付—沙箱环境使用 支付宝新版SDK-PC端扫码支付 手机浏览器H5支付「本文」 PC端扫码支付&#xff0c;其实就是就是 电脑网站支付&#xff0c;本文基于支付宝沙箱环境&#xff0c;不了解的可以看一下上边的链接。 PS&#xff1a;本文是基于支付宝新版 SDK …

华强北耳机修改序列号|支持中英文|自定义修改|傻瓜式一键修改序列号~

软件下载链接>>>&#xff1a;https://t.1yb.co/kQIu 你还在纠结买到的华强北耳机序列号查询不到吗&#xff1f; 你还在纠结因为刷机导致的序列号与充电仓序列号不一致吗&#xff1f; 你还在纠结自己的序列号不够有面吗… 先看一张效果图&#xff1a; 今天分享一下…

[js] 对`a == (‘1‘||‘2‘||‘3‘) ? false : true`写法进行改进,写出你优化后的方法

[js] 对a (1||2||3) ? false : true写法进行改进&#xff0c;写出你优化后的方法 ![1,2,3].includes(a) or ![1, 2, 3].includes(a ) or !{1: true, 2: true, 3: true}[a]个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很…

[BZOJ 1452] Count

Link: BZOJ 1452 传送门 Solution: 二维树状数组模板题 发现颜色数很少$c<100$&#xff0c;因此对于每个颜色都建一棵二维线段树即可 &#xff08;第一次写二维数据结构&#xff0c;发现套个循环就行了&#xff1f;&#xff09; Code: #include <bits/stdc.h>using na…

CentOS离线安装gcc环境(附安装包+图文并茂)

1、关于gcc linux内核本身不依赖gcc&#xff0c;gcc只是一个编译软件&#xff0c;是在kernel的源码变成可执行文件的时候起作用&#xff0c;真正使用起来就没有什么关系。 查看 gcc 版本 gcc -v 如果没有则显示&#xff1a; 2、安装步骤 2.1、下载gcc安装包 gcc下载地址&…

[js] Geolocation.getCurrentPosition()用来做什么的?在什么浏览器不受兼容?

[js] Geolocation.getCurrentPosition()用来做什么的&#xff1f;在什么浏览器不受兼容&#xff1f; 获取当前设备的位置 Android不支持个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌…

CentOS7安装redis并配置外网可访问(局域网可参考)

1、安装gcc编辑器 安装redis需要依赖gcc环境&#xff0c;执行如下命令安装&#xff1a; yum install -y gcc如果机器没有网络的话&#xff0c;可以参考这篇文章&#xff1a; CentOS离线安装gcc环境(附安装包图文并茂) 2、下载redis安装包 redis官网&#xff1a;https://re…

OSPF两种组播地址的区别和联系

1.点到点网络: 是连接单独的一对路由器的网络,点到点网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.52.广播型网络, 比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5;而除了DR…

[js] setTimeout的第三个参数有什么用?

[js] setTimeout的第三个参数有什么用&#xff1f; 第三个参数将作为定时器到期触发的函数的参数个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

CodeForces 931C Laboratory Work 水题,构造

*这种题好像不用写题解... 题意: 一个人要改动别人的实验记录,实验记录记录是一个集合 实验记录本身满足:$max(X)-min(X)<2$ 改动结果要求: 1.新的集合平均值和之前的一样 2.新的集合,$max(Y)<max(X),min(Y)>min(X)$ 求新一个和之前相同数值最少的新记录 题解: 首先考…

悦虎144固件,华强北二代悦虎144固件,1562M芯片144固件

下载地址 https://t.1yb.co/k49w 关于固件 最新的悦虎1562M 144固件&#xff0c;适用于华强北二代悦虎主板&#xff0c;1562M洛达芯片。 关于本次升级&#xff1a;优化功耗&#xff0c;提升续航。

[js] 解释下深度优先遍历和广度优先遍历的区别及如何实现

[js] 解释下深度优先遍历和广度优先遍历的区别及如何实现 1、深度优先采用堆栈结构&#xff0c;先进后出&#xff0c;所占的空间较小&#xff0c;执行时间较长&#xff1b; 2、广度优先采用队列结构先进先出&#xff0c;所占空间较大&#xff0c;执行时间短&#xff0c;空间换…

RDD特性

转载于:https://www.cnblogs.com/ggzhangxiaochao/p/9237510.html

MMI_UT洛达检测软件使用,检测1562A

MMI_UT软件下载链接 > https://t.1yb.co/nLFU 如下为使用教程 关于华强北耳机如何检测已经写过几篇文章了&#xff0c;从后台看到大家给到我的私信&#xff0c;有时候真的挺多感慨的&#xff0c;买个jia耳机确实不容易啊~ 突然发现比买个正品还难&#xff0c;正品就算别的…

[js] 你认为es5的设计缺陷有哪些?

[js] 你认为es5的设计缺陷有哪些&#xff1f; 可以反过来想&#xff0c;es6新增的特性就是为了解决es5的设计缺陷个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

安卓如何修改华强北二代耳机敲击指令?

经常有小伙伴在公中号后台私信我&#xff0c;小源&#xff01;为啥我的二代耳机敲击不管用啊~ 害&#xff0c;先检查一下是不是敲击的这个部位~ 如果敲击部位确认没问题的话&#xff0c;就要看一下是不是敲击设置的问题&#xff0c;默认左耳双击切换下一曲&#xff0c;默认右耳…