- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我使用的移动网络浏览器中使用 input[type='file']
捕获照片后,我尝试在 Canvas 中以正确的方向绘制照片:
fileReader.onloadend = function() {
var exif = EXIF.readFromBinaryFile(new BinaryFile(this.result));
switch(exif.Orientation){
case 8:
ctx.rotate(90*Math.PI/180);
break;
case 3:
ctx.rotate(180*Math.PI/180);
break;
case 6:
ctx.rotate(-90*Math.PI/180);
break;
}
};
但我得到:TypeError: First argument to DataView constructor must be an ArrayBuffer
?
如何获取这个数组缓冲区?
我正在使用 EXIF.js 和 BinaryFile.js
最佳答案
您需要将 base64 字符串转换为 ArrayBuffer对于 ExifJs:
function base64ToArrayBuffer (base64) {
base64 = base64.replace(/^data\:([^\;]+)\;base64,/gmi, '');
var binaryString = atob(base64);
var len = binaryString.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
你不需要BinaryFile
:
var exif = EXIF.readFromBinaryFile(base64ToArrayBuffer(this.result));
这假设您使用 FileReader
和 readAsDataURL
来获取 this.result
。
更好的方法 是首先将文件作为数组缓冲区读取,而不是将其转换为 base64,然后使用 FileReader.readAsArrayBuffer() 再次返回。类似这样的东西(伪代码):
// `file` = files[0] from input change event
function getFileArrayBuffer(file) {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.onload = function() {
resolve(new Uint8Array(reader.result));
}
reader.readAsArrayBuffer(file);
});
}
关于javascript - 使用 EXIF 和 BinaryFile 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24010310/
我正在用 JavaScript 修补一些 Windows 应用商店开发,但我似乎被困在如何从二进制文件中获取字节数组。我在网上找到了几个例子,但它们似乎都只读取文本,而我的文件是图像。我打开文件是这样
我目前正在研究 DOCSIS 的一些内部工作原理和相关。我有点挣扎的一件事是如何制作电缆调制解调器配置文件。 从我收集到的: CM 配置是基于 TLV 的二进制文件格式。 这些配置是使用 TFTP 服
在 ASCII STL 文件中包含多个实体已有详细描述。 solid name1 facet normal N.x N.y N.z outer loop
我关注 this answer 中的结果完全正确,但我收到以下错误: ReferenceError: BinaryFile is not defined 这是使用它的代码: fr.onloadend
sc = SparkContext("Local") rdd = sc.binaryFiles(Path to the binary file , minPartitions = 5).partiti
我正在寻找一种方法来加载和检查由 rustc 生成的 .rlib 二进制文件。我在标准库中四处寻找,但运气不佳。我的假设是 .rlib 包含静态类型检查程序所需的所有类型信息,这些程序“外部包装”它。
在我使用的移动网络浏览器中使用 input[type='file'] 捕获照片后,我尝试在 Canvas 中以正确的方向绘制照片: fileReader.onloadend = function()
我在同一个文件夹中的 hdfs 上有两个 zip 文件:/user/path-to-folder-with-zips/。 我将其传递给 pyspark 中的“二进制文件”: zips = sc.bin
我正在尝试从现有的 Perl 代码逆向工程一个 Julia 脚本,到目前为止一切顺利,但我现在必须在 Julia 中编写一堆二进制文件,这是我不熟悉的和。我想知道是否有人对该任务有任何经验,而且语法是
我偶然发现了我相当古老的照片对象磁盘,遗憾的是发现该公司 (hemera) 不再提供支持。这给我留下了一大堆 .hpi 文件。幸运的是,我找到了 this information关于提取文件的 jpg
打印作业到 CUPS 服务器时,您可以设置 cupsd.conf 参数 PreserveJobHistory和 PreserveJobFiles控制您要保留的作业数量。 CUPS 始终将实际打印作业文
我正在通过阅读数百万个 xml 文件 val xmls = sc.binaryFiles(xmlDir) 该操作在本地运行良好,但在 yarn 上运行失败: client token: N/A d
我是一名优秀的程序员,十分优秀!