将图像视图更改为blob并不总是有效.toImage();

时间:2014-05-23 01:41:33

标签: image-processing titanium-mobile titanium-alloy

以下代码大部分都在使用,但有时在更改为blob后,图像视图不会显示图像。

//store in temp image view, convert to blob
                imageViewTemp.image = "imagename.jpg"

                blob = imageViewTemp.toBlob();


                albumTitle = data[x].name + ' (' + numberPhotos + ')';

                var row = Titanium.UI.createTableViewRow({
                    titleAlb : data[x].name,
                    width : '100%',
                    height : 'auto'
                });
                var image = Titanium.UI.createImageView({
                    top : 0,
                    left : 0,
                    width : '75',
                    height : '75'
                });
                var title = Titanium.UI.createLabel({
                    text : albumTitle,
                    top : 0,
                    left : 110,
                    width : 'auto',
                    height : 'auto'
                });



                var width = blob.width;
                var height = blob.height;

                //crop  so it fits in image view
                if (width > height) {


                    image.image = ImageFactory.imageAsCropped(blob, {
                        width : height,
                        height : height,
                        x : 60,
                        y : 0
                    });

                } else {


                    image.image = ImageFactory.imageAsCropped(blob, {
                        width : (width - 1),
                        height : (width - 1),
                        x : 60,
                        y : 0
                    });

                }



                row.add(image);
                row.add(title);
                rows.push(row);


            }

为了改变图像的尺寸,我使用的是一个名为image factory的模块。在我可以更改它之前,我必须将图像存储在一个临时图像视图中,然后我将其转换为blob:

                blob = imageViewTemp.toBlob();

问题是在呈现屏幕后有时这不起作用:

image.image = ImageFactory.imageAsCropped(blob, {
                            width : height,
                            height : height,
                            x : 60,
                            y : 0

});

Othertimes会。

我在网上看到问题可能与帖子布局周期有关,但我不确定,或者如何继续

http://developer.appcelerator.com/question/174329/what-are-the-difference-between-toblob--toimage

所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

在将图像放入临时图像视图之前,必须首先使用REST API方法(GET)下载图像,否则将在文件完全下载之前呈现临时图像视图(.toImage是异步回调方法),为无用的blob和没有图像让路。

此方法的唯一问题是,您依赖于REST API调用而不会失败。