【问题标题】:canvas.toDataURL does not result in image/jpeg datacanvas.toDataURL 不会产生图像/jpeg 数据
【发布时间】:2013-03-07 21:00:35
【问题描述】:

我正在尝试使用 base64 + phonegap 2.5 将 html5 画布数据保存到服务器。

平台:windows phone 7 和 8,Android 和 IOS。

图像大小调整的基本需求是在通过服务器发送之前优化数据。

我遇到了android平台base64响应方法的问题,如下

问题

  1. Android 4.2:我写了这段代码c.toDataURL("image/jpeg");,但我得到了这个data:image/png;base64
  2. Android 2.3:我无法检索 base64 数据

我是不是做错了什么?

【问题讨论】:

  • jalsa karrr 米兰字节

标签: android cordova html5-canvas base64


【解决方案1】:
  • Android 2.3:我无法检索 base64 数据

旧 Android 版本不支持canvas.toDataURL。

有一个 js 修复,但性能可能不是很好: https://code.google.com/p/todataurl-png-js/

点击此处了解更多信息: toDataURL not working on android browsers

  • Android 4.2:我写了这段代码 c.toDataURL("image/jpeg");但我得到了这个数据:image/png;base64

Android 4.x 支持 canvas.toDataURL;但是,它不支持 jpeg 格式(如果您要求 jpeg,它将返回一个 png)。

更多详情: https://github.com/scottjehl/Device-Bugs/issues/33

【讨论】:

  • 非常感谢 Luis 的重播。它对我有很大帮助。
  • chrome on android 4.1+ 如果你要求的话,似乎会给出“image/jpeg”
【解决方案2】:

旧浏览器 (WebKit) 仅支持 image/png,这是您唯一可以信赖的编解码器。 img/jpeg 稍后添加,但许多浏览器仍然不支持。

对于 Android 2.3:尝试是否可以在原版浏览器中执行此操作。如果它在那里工作,那么它是一个 PhoneGap 问题,应该报告给作者。

【讨论】:

  • 非常感谢您的更新。你能帮我解决这个问题吗?实际上我正在尝试使用画布减小图像大小。所以我正在做的是将图像加载到画布上并将其重新绘制为 300x300 尺寸,然后获取画布的 base64 字符串。画布也是 310x310 像素。但是当生成的base64字符串大于使用android设备生成的原始图像的base64字符串时。
  • 如果您使用此特定信息打开另一个问题会更好,以便讨论的上下文保持清晰和可搜索
  • “但是当生成的base64字符串大于原始图像的base64字符串时” - 这可能是因为原始图像(jpg?)使用低质量保存因素,而您获得的新图像质量更高。您可以尝试通过第二个参数设置质量。
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多