我目前正在使用ionic和cordova在移动设备(Android和iPhone)上开发应用程序。我想编辑一张图片,为此我使用了fabric.js库。Fabric.js将图像和其他项目转换为画布,然后我在画布上添加一些图片(贴纸),并将其导出为图像(dataURL)。因此,画布的大小非常重要,因为它是一个质量因素(基于小画布导出图像将导致质量差)。画布大小约为607*1080像素(取决于拍摄照片的设备)。我想将其适应屏幕而不失去质量(就像下面解释的那样,我无法调整画布大小而不失去质量)。
我尝试了三种方法但都没有成功。 1. 调整画布大小:会导致图片质量下降(导出图像将具有画布大小) 2. 适应视口:cordova不允许在移动设备上更改视口。有一个解决方法,但这会破坏我的设计(非常小的导航栏,较小的菜单等) 3. 使用CSS3缩放属性:在桌面上运行得很好,但在移动设备上存在事件映射问题(我没有在ios上尝试过,但在android WebView上遇到了问题)。事件映射没有被缩放。画布被缩小,但无法与画布元素进行交互。如果一个画布元素(贴纸)位于x:100 y:100处,当我将缩放属性设置为0.5时,该元素将位于(50,50),而不再是(100,100)。是否有任何方法根据android webview的缩放属性来纠正事件映射?
我不知道是否有其他方法可以解决这个问题,但我已经被困扰了三天,并且在论坛、fabricjs文档和谷歌上花费了很多时间,但没有找到任何可行的解决方案或其他可以帮助我的东西。 编辑:下面有两种可行的解决方法。检查我的答案以了解如何使用CSS完成。
我尝试了三种方法但都没有成功。 1. 调整画布大小:会导致图片质量下降(导出图像将具有画布大小) 2. 适应视口:cordova不允许在移动设备上更改视口。有一个解决方法,但这会破坏我的设计(非常小的导航栏,较小的菜单等) 3. 使用CSS3缩放属性:在桌面上运行得很好,但在移动设备上存在事件映射问题(我没有在ios上尝试过,但在android WebView上遇到了问题)。事件映射没有被缩放。画布被缩小,但无法与画布元素进行交互。如果一个画布元素(贴纸)位于x:100 y:100处,当我将缩放属性设置为0.5时,该元素将位于(50,50),而不再是(100,100)。是否有任何方法根据android webview的缩放属性来纠正事件映射?
我不知道是否有其他方法可以解决这个问题,但我已经被困扰了三天,并且在论坛、fabricjs文档和谷歌上花费了很多时间,但没有找到任何可行的解决方案或其他可以帮助我的东西。 编辑:下面有两种可行的解决方法。检查我的答案以了解如何使用CSS完成。