我正在构建一个Win8 / WinJS应用程序,用于加载本地图片库中的图片。一切通常都能很好地加载有效图像并在列表视图中显示它们。
现在我需要检测损坏的图像并禁用这些图像的应用程序部分。
例如,打开文本文件并在其中输入一些文本。将文件另存为.jpg,这显然不是一个有效的jpg图像。我的应用程序仍然因为.jpg名称而加载文件,但现在我需要禁用应用程序的某些部分,因为图像已损坏。
有没有办法可以检查我加载的给定图像是否是有效的图像文件?检查它是否腐败?
我正在使用标准的WinRT / WinJS对象,如StorageFile,Windows.Storage.Search相关对象等,根据对文件类型的搜索来加载我的图像列表。
我不需要从搜索结果中滤除损坏的图像。我只需要能够在有人在ListView中选择图像后判断图像是否已损坏。
答案 0 :(得分:1)
一种可能的解决方案是检查图像的width
和height
属性,以确定它是否有效。
答案 1 :(得分:0)
是的,contentType
属性将返回文件扩展名。我可以通过最好的方式查看image properties:
file.properties.getImagePropertiesAsync()
.done(function(imageProps) {
if(imageProps.width === 0 && imageProps.height === 0) {
// I'm probably? likely? invalid.
});
答案 2 :(得分:0)
其中SelectImagePlaceholder是一个图像控件.. =)
StorageFile文件;
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 } }