- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名服务器端开发人员,最近正在学习纯 JS 的诀窍。我正在研究的一个实际例子是图像处理。这个问题是关于我检索图像方向信息以便随后旋转和/或反射(reflect)它的努力。
这个优秀SO answer让我开始。我写的代码是:
// used to determine orientation information
function get_orientation(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) {
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.slice(0, 128 * 1024));
}
这适用于一系列图像,但是 here's one image这会导致行 var tags = view.getUint16(offset, little);
因 RangeError: argument 1 accesses an index that is out of range
崩溃。
我无法判断图像是否已损坏,或者代码是否需要更多特化。专家可以帮助我进行调整以处理此类情况吗?提前致谢!
最佳答案
该图像有一个 Exif block ,但它是空的。
$ exif -x 28531470-85e0855a-70c9-11e7-9bba-107a664e6635.jpeg
<exif>
</exif>
这是部分十六进制转储,
00000010: 0001 0000 ffe1 0008 4578 6966 0000 ffdb ........Exif....
当它使用 view.getUint32()
调整偏移量时,它使用来自 ffdb
block 的量化数据。
你可以尝试读取标记长度,如果是 <= 8 则跳过,
while (offset < length) {
var marker = view.getUint16(offset, false);
var markerLength = view.getUint16(offset+2, false);
....
关于javascript - 在一个测试用例中使用纯 JS 检索图像方向失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49202688/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!