- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Three.js
的实验性应用程序,我允许用户将他在 canvas
元素上绘制的图表保存为 JPEG。我这样做是通过使用:
<a id="download" download="PathPlanner.jpg">Download as image</a>
function download() {
var dt = canvas.toDataURL('PathPlanner/jpeg');
this.href = dt;
}
document.getElementById('download').addEventListener('click', download, false);
同时确保
preserveDrawingBuffer: true
这工作正常,保存的 jpeg
图像可能看起来像这样:
然后我正在试验 this package ,它接受一个图像并找到遵循任何特定线条颜色的两点之间的最短距离。 Path-from-image
包使用 jpeg-js编码和解码图像。
据我所知,JPEG 图像的第 0 个和第一个字节始终是 0xFF 和 0xD8,但是,我在保存的 .jpg
图像文件中不断收到以下错误:
Uncaught Error: SOI not found at constructor.parse
我正在使用 path-from-image
包中的示例代码来测试它在我的应用程序中的功能。代码是:
const fs = require('fs');
const jpeg = require('jpeg-js');
const PathFromImage = require('path-from-image');
const redPointCoords = [0, -16];
const bluePointCoords = [0, 0];
const image = jpeg.decode(fs.readFileSync('Images/PathPlanner.jpg'), true);
const pathFromImage = new PathFromImage({
width: image.width,
height: image.height,
imageData: image.data,
colorPatterns: [{ r: [128], g: [128], b: [128] }], //
description of the gray color
});
const path = pathFromImage.path(redPointCoords, bluePointCoords);
console.log(path);
错误指向 const image = jpeg.decode(fs.readFileSync(''), true);
虽然这里产生了错误:
var fileMarker = readUint16();
if (fileMarker != 0xFFD8) { // SOI (Start of Image)
throw new Error("SOI not found");
}
这是 Line 598 in jpeg-js/lib/decoder.js.
该包适用于其他图像,但不适用于我允许用户保存的图像。
关于如何解决这个问题有什么建议吗?
最佳答案
关于.toDataURL()的文档说:canvas.toDataURL(type, encoderOptions);。在您的代码示例中,
var dt = canvas.toDataURL('PathPlanner/jpeg');`
此方法获取错误的 mime 类型,因此它默认生成 PNG,应该是 'image/jpeg'
,结果将是这样的:
var dt = canvas.toDataURL('image/jpeg');
关于javascript - 未从保存的 Canvas 图像中找到 SOI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47448303/
我正在加载 png file使用 stb_image_load。代码看起来像 stbi_uc* pixels = stbi_load("textures/viking_room.png", &texW
... 或者我应该深入到数据流中寻找 0xFF 0xD8序列? 来自 this Q ,我已经了解到什么 APPn 不必立即遵循 SOI。是否存在符合规范的 JPEG 情况,其中 SOI 位置 != 流
我有一个使用 Three.js 的实验性应用程序,我允许用户将他在 canvas 元素上绘制的图表保存为 JPEG。我这样做是通过使用: Download as image function down
我想从 JPEG 头文件中读取图像标记的开头。如何从c中的JPEG头文件中读取这个标记? 最佳答案 图像的开始代码是FF D8,因此您需要在序列中找到这些字节,例如: #include #inclu
尝试解码图像并写入文件。 这是我的代码: package main import ( "bytes" "fmt" "github.com/reteps/
This is the image that causes an error 我遇到了这个问题,我尝试了所有我知道的方法,但没有任何效果。我正在尝试通过套接字将多个图像(一次一个图像)从数据库发送到客
我是一名优秀的程序员,十分优秀!