我的应用程序在本地SQLite数据库中有一堆存储为blob的图像。这些图像是使用设备相机拍摄的。我正在使用钛合金,因此使用.save()
方法和合金模型保存图像。
我已经开始使用可以将图片发布到Twitter或Facebook的TiSocial module。其中一个参数是image
,它必须是:
您想要分享的图片的本地/远程路径
我想要使用的图像被设置为ImageView上的图像属性。 ImageView图像的设置如下:$.theImageView.image = args.the_image;
,其中args.image
是图像blob,取自数据库集合。
我尝试将此图像blob设置为TiSocial module初始化方法上的图像:
Social.activityView({
text: "Hello world! Take a look at this: " + args.name,
image: args.the_image,
removeIcons:"airdrop,print,copy,contact,camera"
});
或者我尝试使用ImageView上保存的图像,如下所示:
Social.activityView({
text: "Hello world! Take a look at this: " + args.name,
image: $.theImageView.image,
removeIcons:"airdrop,print,copy,contact,camera"
});
然而,这些都不起作用,并且Tweet或Facebook消息对话框中没有显示图像。并且控制台中不会出现任何错误。
另一方面,如果我将image
属性设置为保存在assets
文件夹中的图像,那么它可以正常工作。例如:
`image: "an_image.jpg"`
我尝试了下面评论中提到的解决方案,即将图像保存到Ti.FileSystem,然后从那里读取图像。但是,这仍然无效。
答案 0 :(得分:1)
您可以尝试以这种方式共享远程图像...
var largeImg = Ti.UI.createImageView({
width : Ti.UI.SIZE,
height : 'auto',
image :'http://www.google.com/doodle4google/images/splashes/featured.png'
});
var imageGoogle =largeImg.toBlob();
// share image
Social.activityView({
status : "Hello world! Take a look at this: ",
image : imageGoogle,
removeIcons:"airdrop,print,copy,contact,camera"
});
答案 1 :(得分:0)
然后我建议在数据库表中添加一个名为img_path的字段,因为你无法从blob获取路径,因此当你将任何blob存储到合金模型时,还要将其路径添加到该模型,以便以后可以检索它。份额。
希望你明白。
答案 2 :(得分:0)
通过将文件保存到Ti.Filesystem,然后检索它并使用.getNativePath()
方法,我有一些运气:
function getImage() {
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, args.alloy_id + '.jpg');
return f.read();
}
var theImage = getImage();
Social.activityView({
text: "Just tried this beer called " + args.name,
image: theImage.getNativePath(),
removeIcons:"airdrop,print,copy,contact,camera"
});