【问题标题】:how to convert an image into a string [closed]如何将图像转换为字符串 [关闭]
【发布时间】:2016-06-03 23:14:45
【问题描述】:

如何将图像转换为字符串,无论是 utf 还是 ancii 或其他什么都没有关系。我要做的就是拍摄一张图像并将其转换为文本,以便将其存储在文本文件中,然后再对其进行解码。

是的,我当然是用 JS 来做的,而且我要转换的图像都是 JPEG。

【问题讨论】:

  • 数据当前是什么格式的?一个字节数组,如果实际上是一个字符数组,那么它已经是一个字符串。您是如何将数据写入文件的,该过程中的哪些内容目前不起作用?
  • @David 如所说,JPEG,请阅读整个问题。而且我还没有任何流程,因为我找不到任何我正在寻找的答案。所以我只是不知道该怎么做!
  • @julianavar:什么数据格式?字节数组?还有什么?请务必阅读整个评论。
  • 哦!老实说,我对字节一无所知,我是一名前端开发人员,如果你要回答,你是否也将其包括在内,我敢打赌这对任何其他前端都会有很大帮助-想知道同样事情的最终开发人员。另外,抱歉,我确实阅读了您的评论,但正如我所说,我不习惯谈论字节和所有这些,我以为您的意思是输入了什么样的图像。不过还是谢谢你:)

标签: javascript


【解决方案1】:

您可以在画布中绘制图像,将其编码为 base64,然后将其用作文本。几乎所有语言都可以在 base64 和图像之间进行转换。

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img= new Image();
img.src = "your url to image";
ctx.drawImage(img,0,0);
c.toDataURL();
//c now contains the base64 encoding of your image

画布也可以动态创建,而不是作为页面的一部分。你也可以等待图片的onLoad事件。

【讨论】:

  • 好的,编码看起来很简单,但是以后怎么解码呢?
  • 'var image = new Image(); image.src = '数据:图像/png;base64,iVBORw0K...';其中 data:image/..... 是您从 toDataUrl() 获得的字符串。具有此 src 的图像与任何其他图像一样用于在画布中渲染或附加到 DOM。
【解决方案2】:

使用画布..这是从程序中复制的代码

function fun_nam(url,back, op){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
    var canvas = document.createElement('CANVAS');
    var ctx = canvas.getContext('2d');
    var dataURL;
    canvas.height = this.height;
    canvas.width = this.width;
    ctx.drawImage(this, 0, 0);
    dataURL = canvas.toDataURL(op);
    back(dataURL);
    canvas = null; 
};
img.src = url;

}

一些细节...

HTMLCanvasElement.toDataURL() 方法返回一个数据 URI,其中包含由 type 参数指定的格式的图像表示(默认为 PNG)。返回的图像分辨率为 96 dpi。

语法:canvas.toDataURL(type, encoderOptions);

参数

类型 |可选

  • 表示图像格式的 DOMString。默认类型为 image/png。

编码器选项 |可选

  • 如果请求的类型是 image/jpeg 或 image/webp,则一个介于 0 和 1 之间的数字表示图像质量。 如果此参数是其他参数,则使用图像质量的默认值。默认值为 0.92。其他参数被忽略。

返回值

  • 包含请求的数据 URI 的 DOMString。

其实我们是用drawImage函数绘制图像数据,然后使用toDataURL函数得到一个base-64编码的图像数据:url。 编码只能在加载完整图像后进行。否则解码后会得到一些损坏/灰色类型的图像。

【讨论】:

  • 很好的答案!但是你能解释一下发生了什么吗?
【解决方案3】:

【讨论】:

    【解决方案4】:

    您可以将图像转换为文本数据。检查上一个答案。

    在 JavaScript 中获取图像数据? https://stackoverflow.com/a/934925/5378536

    但是,存在 CORS 问题。检查以下问题。

    toDataURL 抛出未捕获的安全异常https://stackoverflow.com/a/20027883/5378536

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 2016-07-26
      • 2018-05-02
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多