【问题标题】:Saving an image to app properties将图像保存到应用程序属性
【发布时间】:2014-10-16 09:15:52
【问题描述】:

您好,我正在尝试将图像作为 JSON 数组的一部分保存到应用程序属性,但是当我尝试显示它时,图像视图显示为空白。单击 Upload_pic 按钮时,将从手机的图库中获取图像。代码如下:

Upload_pic.addEventListener('click', function (e){  
        Upload_pic.setImage('/images/uploadPhoto2.png');
        Titanium.Media.openPhotoGallery({
            success: function(e){
                console.log("typeof e.media --------  " + e.media);
                ImageView=Ti.UI.createImageView({
                    image:e.media
                }).toImage();

            },
            error: function(e){
                alert("Error accessing photos");

                Upload_pic.setImage('/images/uploadPhoto1.png');
            },
            cancel: function(e){

                Upload_pic.setImage('/images/uploadPhoto1.png');
            },
            alowEditing:true,
            mediaType:[Titanium.Media.MEDIA_TYPE_PHOTO]
        });
});

然后我将图像保存在此 submit_btn 点击:

 Submit_btn.addEventListener('click', function (e){
            var filename = ID+"-ea.jpg";
            bgImage = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, filename);
            bgImage.write(ImageView);

            if (bgImage.exists()) //File ever does not exist.
                 {
                        alert('file '+filename+' exists!!!');
                    // I am getting this alert
                }
                else
                {
                        alert('file '+filename+' IS NOT exist(');
                }

            MyRecipe_info= {name: title_textField.value, ID:ID, Ingredients: ingredients_textField.value, numSteps:numSteps_textField.value, pic:bgImage, steps:numStepsArray};
            Ti.App.Properties.setBool('MyRecipeAdded', true);


            MyRecipes_data.push(MyRecipe_info);
            Ti.App.Properties.setString('MyRecipesData', JSON.stringify(MyRecipes_data));
            alert("Recipe added successfully!");
        });

然后我在这里展示它:

MyRecipes_data=JSON.parse(Ti.App.Properties.getString('MyRecipesData'));
for(i=0;i<MyRecipes_data.length;i++){
    var Pic = Titanium.UI.createImageView({
        left: '5dp',
        top:'20dp',
        right:'15dp',
        height: Ti.UI.SIZE,
        bottom: '5dp',
        image:MyRecipes_data[i].pic
    });

}

目前在 iOS 上工作,但代码将来需要在 Android 上工作。使用 Titanium SDK 3.3.0.201407100905 和 Titanium Classic

【问题讨论】:

    标签: javascript ios image properties titanium


    【解决方案1】:

    在属性中存储图像是一个坏习惯,因为它特别为 android 占用大量内存,所以我建议只在该数组中存储图像路径

    或者即使可能,您也应该使用数据库来存储数据,而不是使用 Ti.Property。

    希望你能明白。

    【讨论】:

      【解决方案2】:

      问题是我需要存储 bgImage.nativePath

      【讨论】:

        猜你喜欢
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多