using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
using zl_screensaver.Models;
namespace zl_screensaver
{
public class ImageLoader
{
public static BitmapImage LoadImage(string filePath)
{
try
{
if (Path.GetExtension(filePath).ToLower() == ".mp4") { return null;}
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
var memoryStream = new MemoryStream();
fs.CopyTo(memoryStream);
memoryStream.Position = 0;
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = memoryStream;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
bitmap.Freeze(); // To make the BitmapImage cross-thread accessible
return bitmap;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
public static ObservableCollection<ScreenSaverListItem> LoadImagesFromDirectory(string directoryPath)
{
try
{
var imageCollection = new ObservableCollection<ScreenSaverListItem>();
var imageFiles = Directory.GetFiles(directoryPath, "*.*", SearchOption.TopDirectoryOnly)
.Where(s => s.EndsWith(".png") || s.EndsWith(".jpg") || s.EndsWith(".jpeg")
|| s.EndsWith(".gif") || s.EndsWith(".bmp") || s.EndsWith(".mp4"));
foreach (var file in imageFiles)
{
var imageModel = new ScreenSaverListItem
{
FilePath = file,
ImageBinarySrc = LoadImage(file),
name = file,
url = file,
EnableMouseControlDelIcon = true
};
if (imageModel.url == AppConfig.Model.DefaultFile)
{
imageModel.UsingVisibility = Visibility.Visible;
}
imageCollection.Add(imageModel);
}
return imageCollection;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交