2

我正在构建一个从本地图片库加载图片的 Win8/WinJS 应用程序。一切通常都可以正常加载有效图像并在列表视图中显示它们。

现在我需要检测损坏的图像并为这些图像禁用部分应用程序。

例如,打开一个文本文件并在其中输入一些文本。将文件另存为 .jpg,这显然不是有效的 jpg 图像。由于 .jpg 名称,我的应用程序仍会加载文件,但现在我需要禁用应用程序的某些部分,因为图像已损坏。

有没有办法检查我加载的给定图像是否是有效的图像文件?检查它是否损坏?

我正在使用标准 WinRT / WinJS 对象,如 StorageFile、Windows.Storage.Search 相关对象等,根据搜索文件类型加载我的图像列表。

我不需要从搜索结果中过滤掉损坏的图像。在有人在 ListView 中选择图像后,我只需要能够判断图像是否损坏。

4

3 回答 3

1

一种可能的解决方案是检查图像widthheight属性以确定它是否有效。

于 2012-10-03T18:02:59.863 回答
0

其中 SelectImagePlaceholder 是一个图像控件.. =)

存储文件文件;

        using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
        {
            try
            {
                // Set the image source to the selected bitmap
                BitmapImage bitmapImage = new BitmapImage();

                await bitmapImage.SetSourceAsync(fileStream);


                SelectImagePlaceholder.Source = bitmapImage;
                //SelectImagePlaceholder.HorizontalAlignment = HorizontalAlignment.Center;
                //SelectImagePlaceholder.Stretch = Stretch.None;
                this.SelectImagePlaceholder.DataContext = file;

                _curMedia = file;
            }
            catch (Exception ex)
            {
                //code Handle the corrupted or invalid image
            }
        }
于 2013-10-23T08:25:47.427 回答
0

是的,该contentType属性将返回任何文件扩展名。我能找到它查看图像属性的最佳方法:

file.properties.getImagePropertiesAsync()
               .done(function(imageProps) {
                   if(imageProps.width === 0 && imageProps.height === 0) {
                       // I'm probably? likely? invalid.
                   });
于 2012-10-05T02:55:29.230 回答