我通过使用html画布并使用context.filltext存储经度和纬度以及context.drawimage来存储图像,从而对图像进行地理标记。然后我使用todataURL()函数对base64中的画布进行编码,我已将其保存到我的数据库中。我已经从我的数据库加载了这些数据,有没有办法解码数据并在javascript中提取经度和纬度?
答案 0 :(得分:1)
不,你拥有的是一个简单的图像文件,就像任何其他图像文件一样。画布不会将您绘制的图形与其分开。文本(变为栅格化)。
您必须:
例如,您可以创建一个对象,其中包含来自toDataURL()和long / lat数据的数据uri:
var geoImage = {
image: canvas.toDataURL(),
longitude: "xxxx",
latitude: "yyyy"
}
然后将其编码为JSON并将其发送到服务器:
var serverString = JSON.stringify(geoImage);
如果您无法访问原始的长/纬数据,我只会建议使用OCR作为另一种选择。凭借在该领域的一些经验,我知道你面临着相当多的挑战,但它并不稳定。一个非常好的OCR模块需要花费很多钱,而便宜的OCR模块会给你带来很多错误。如果背景清晰,字体易于分析等等,还取决于您在图像上绘制文本的方式。
显而易见的第三种选择可能因质量原因而更好。当您将图像绘制到画布上然后提取它时,您将失去质量。由于大多数相机仅以JPEG或RAW格式存储图像,因此只有一个选项可以使用canvas,JPEG,这意味着它需要通过“有损”压缩进行重新压缩。您当然可以提取为PNG,但在大多数情况下会增加文件大小。
您也可以在服务器端提取EXIF数据。然后,您可以将原始图像与老化版本一起存储。
答案 1 :(得分:1)
不使用光学字符识别软件。
当您将文本绘制到画布时,它将停止为文本,并开始成为以人类观察者将其识别为字符的形状排列的像素集合。
解释如何实现光学字符识别的算法将远远超出这个答案的范围。我建议你:
我只希望你在简单的背景和图像中的固定位置上显示文本,否则OCR软件在查找和识别它时会遇到问题。