Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 将图像视图更改为blob并不总是有效;_Image Processing_Titanium Mobile_Titanium Alloy - Fatal编程技术网

Image processing 将图像视图更改为blob并不总是有效;

Image processing 将图像视图更改为blob并不总是有效;,image-processing,titanium-mobile,titanium-alloy,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

下面的代码在大部分情况下有效,但有时在更改为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:

//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);


            }
                blob = imageViewTemp.toBlob();
问题是在渲染屏幕后,有时这将不起作用:

//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.image = ImageFactory.imageAsCropped(blob, {
                            width : height,
                            height : height,
                            x : 60,
                            y : 0

});
其他时候会

//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);


            }
我在网上读到,这个问题可能与后期布局周期有关,但我不确定,或者如何继续

//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);


            }

//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);


            }
感谢所有帮助。

解决了问题

//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);


            }
在将图像放入临时图像视图之前,必须先使用REST API方法(GET)下载图像,否则临时图像视图将在文件完全下载之前呈现(.toImage是一种异步回调方法),从而为无用的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);


            }
这种方法的唯一问题是,您依赖RESTAPI调用不会失败

//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);


            }