jos*_*eym 7 javascript placeholder appcelerator imageview
我正在开发SDK 1.6.2.
我的应用程序使用相机捕获并将图像保存到Titanium.Filesystem.applicationDataDirectory.
应用程序的轻击应该显示在屏幕上平铺的所有存储的图像(存储在数据库中的详细信息[路径]).
保存图片:
var image = event.media // from camera success
var filename = new Date().getTime() + "-ea.jpg";
bgImage = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, filename);
bgImage.write(image);
Run Code Online (Sandbox Code Playgroud)
存储到数据库:
var db = Titanium.Database.open('photoDB');
try{
db.execute('INSERT INTO stored (image) VALUES (?)', bgImage.nativePath);
} catch(e) {
alert(e.message);
}
db.close();
Run Code Online (Sandbox Code Playgroud)
显示图片:
imageArray = [];
images = [];
var db = Titanium.Database.open('photoDB');
var dbrows = db.execute('select id, date, image from stored order by date asc');
while (dbrows.isValidRow()) {
imageArray.push({
image:dbrows.fieldByName('image')
});
dbrows.next();
}
dbrows.close();
// loop thru and display images
for (var i = 0; i < imageArray.length; i++){
var pushleft = (i % 4) * 75; // tile from left
var pushtop = Math.floor(i/4) * 96; // determine how far from top
var file = Titanium.Filesystem.getFile(imageArray[i].image);
images[i] = Ti.UI.createImageView({
image: imageArray[i].image, // path to image at applicationDataDirectory
width: 75,
height: 96,
left: pushleft + 5, // logic for positioning
top: pushtop + 5, // logic for positioning
store_id: imageArray[i].id
});
win.add(images[i]);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当图块工作时,图像只显示图像占位符,而不是存储的图像.
我有phonedisk,所以在为我的设备构建应用程序后,我可以查看应用程序目录并存储图像.
我错过了什么?
jos*_*eym 10
想出来了,谢谢大家的帮助;)<sarcasm(这只是一天,我没有怨恨)
如果其他人有类似的问题,这就是错误的.
// Create a file name
var filename = new Date().getTime() + "-ea.jpg";
// Create the file in the application directory
bgImage = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, filename);
// Write the image to the new file (image created from camera)
bgImage.write(image);
Run Code Online (Sandbox Code Playgroud)
当我将图像位置存储在数据库中时,我正在存储完整路径bgImage.nativePath.但是,当我更新并重建应用程序时,应用程序applicationDataDirectory发生了更改,因此存储的路径无效.
所以现在我只是存储var filename在数据库中,当我显示它时:
images[i] = Ti.UI.createImageView({
image: Titanium.Filesystem.applicationDataDirectory + Ti.Filesystem.separator + imageArray[i].image, // path to image at applicationDataDirectory
width: 75,
height: 96,
left: pushleft + 5, // logic for positioning
top: pushtop + 5, // logic for positioning
store_id: imageArray[i].id
});
Run Code Online (Sandbox Code Playgroud)
现在,即使有更新,它总是指向正确的applicationDataDirectory