我使用myView.toImage()
这正如预期的那样返回一个blob,太棒了!
然后,我可以将此blob编码为base64,并通过将解码后的字符串加载到ImageView
中,在应用程序中进行测试解码,从而完美呈现图像。
但是当在php中解码这个字符串时,base64字符串有两个问题: 首先,字符串长度并不总是4的倍数,即没有添加填充,其次,当手动添加填充时,图像始终为空白。
然后在按钮对象上使用相同的代码可以很好地工作,这只会在Ti.View对象上使用toImage()
方法时出现
工作代码(产生良好的base64字符串)
myButton.toImage(toImageComplete);
function toImageComplete(blob){
Ti.API.info("To image complete" + blob);
var sigBase64 = Ti.Utils.base64encode(blob);
Ti.API.info(sigBase64);
}
非工作代码(产生错误的base64字符串),请注意唯一的变化是调用toImage的对象现在是Ti.UI.View的实例,而不是Ti.UI.Button
myView.toImage(toImageComplete);
function toImageComplete(blob){
Ti.API.info("To image complete" + blob);
var sigBase64 = Ti.Utils.base64encode(blob);
Ti.API.info(sigBase64);
}
Appcelerator Studio 4.6 SDK 5.3.0GA 编译为Android平板电脑和Genymotion模拟器
答案 0 :(得分:0)
好的,所以3天的尝试,3天的挫折,我终于有了解决方案。如果它有助于任何人避免浪费我浪费的时间:
这实际上一直在运行,但我使用Ti.API.info()
的输出来查看生成的base64字符串。似乎Ti.API.info()
截断了长字符串。将base64字符串保存到数据库并检索所有字符串时,按预期工作。
这个故事的道德......不要使用Ti.API.info()
来记录长字符串,它们会被截断