72 lines
2.3 KiB
C#
72 lines
2.3 KiB
C#
using Disco.Models.Repository;
|
|
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
|
|
namespace Disco.Services
|
|
{
|
|
public static class DeviceDataStoreExtensions
|
|
{
|
|
public static bool ImageImport(this DeviceModel deviceModel, Stream ImageStream)
|
|
{
|
|
try
|
|
{
|
|
using (Bitmap inputBitmap = new Bitmap(ImageStream))
|
|
{
|
|
using (Image outputBitmap = inputBitmap.ResizeImage(256, 256))
|
|
{
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
outputBitmap.SavePng(ms);
|
|
ms.Position = 0;
|
|
|
|
var deviceModelImagePath = deviceModel.ImageFilePath();
|
|
|
|
|
|
using (var storeStream = new FileStream(deviceModelImagePath, FileMode.Create, FileAccess.Write, FileShare.None))
|
|
{
|
|
ms.CopyTo(storeStream);
|
|
}
|
|
//deviceModel.Image = ms.ToArray();
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static FileStream Image(this DeviceModel deviceModel)
|
|
{
|
|
var deviceModelImagePath = deviceModel.ImageFilePath();
|
|
|
|
if (File.Exists(deviceModelImagePath))
|
|
return new FileStream(deviceModelImagePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
|
else
|
|
return null;
|
|
}
|
|
|
|
public static string ImageFilePath(this DeviceModel deviceModel)
|
|
{
|
|
var configCache = new Data.Configuration.SystemConfiguration(null);
|
|
|
|
var deviceModelImagesDataStore = DataStore.CreateLocation(configCache, "DeviceModelImages");
|
|
|
|
return Path.Combine(deviceModelImagesDataStore, $"{deviceModel.Id}.png");
|
|
}
|
|
|
|
public static string ImageHash(this DeviceModel deviceModel)
|
|
{
|
|
var deviceModelImagePath = deviceModel.ImageFilePath();
|
|
|
|
if (File.Exists(deviceModelImagePath))
|
|
return File.GetLastWriteTimeUtc(deviceModelImagePath).ToBinary().ToString();
|
|
else
|
|
return "-1";
|
|
}
|
|
}
|
|
}
|