【发布时间】:2015-08-31 23:07:03
【问题描述】:
我目前正在使用 ionic 和 cordova 在移动设备(Android 和 iPhone)上开发应用程序。我想编辑一张图片。我使用 fabric.js 库来做到这一点。 Fabric.js 将图像和其他项目转换为画布。然后我在画布上添加一些图像(贴纸)并将其导出为图像(dataURL)。所以画布的大小真的很重要,因为它是一个质量因素(基于小画布导出图像会导致质量很差)。画布大小约为 607*1080 像素(取决于拍摄照片的设备)。我想在不损失质量的情况下将其放入屏幕(如下所述,我无法在不损失质量的情况下调整画布大小)。
我尝试了 3 个想法,但没有一个奏效。
- 调整画布大小:导致质量下降(导出的图像将具有画布大小)
- 调整视口:cordova 不允许更改移动设备上的视口。有一个解决方法,但它会破坏我的设计(非常小的导航栏,更小的菜单,......)
- 使用 CSS3 缩放属性 :它在桌面上就像一个魅力,但在移动设备上存在事件映射问题(我没有在 ios 上尝试,但问题发生在 android Webview 上)。事件映射未缩放。画布被缩小,但无法与画布元素交互。如果画布元素(贴纸)位于 x:100 y:100,当我将缩放属性设置为 0.5 时,该元素将位于 (50,50) 处,而不再位于 (100,100) 处。有没有办法根据android webview的缩放属性来纠正事件映射?
我不知道是否有其他方法可以做到这一点,但我被这个问题困扰了 3 天,我在论坛、fabricjs 文档和谷歌上花了很多时间,但我没有找到任何工作解决方案或其他可以帮助我的东西。
编辑:下面有 2 个可行的解决方案。检查我的答案以了解如何使用 css 做到这一点。
【问题讨论】:
-
我之前也遇到过类似的问题。我认为您应该将 fabric.js 计算复制到为事件完成的计算中.....
-
很多时候,用自己的方式编写代码比尝试使用打包库更好
-
我没有时间编写一个库来实现 fabris.js 中包含的所有功能。我使用了这个库的很多功能,从头开始重新创建所有内容会花费太多时间。
-
您可能会结束编写另一个库,然后决定与人们共享它。有人会对那个图书馆有疑问。
标签: javascript android cordova canvas fabricjs