上传文件时调整图像大小
本文关键字:图像 调整 文件 | 更新日期: 2023-09-27 18:29:10
我的wpf-mvvm应用程序正在尝试将图像上传到数据库。代码运行良好,图像以图像的形式保存到数据库中。我需要在上传时实现调整图像大小。我的意思是,当点击上传时,图像将动态调整大小并保存到数据库这是我的代码
public void Upload(object obj)
{
try
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".png";
dlg.Filter = "Image files (*.png;*.jpg)|*.png;*.jpg";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
string filename = dlg.FileName;
UploadText = filename;
FileStream FS = new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] img = new byte[FS.Length];
FS.Read(img, 0, Convert.ToInt32(FS.Length));
UploadLogo = img;
Stream reader = File.OpenRead(filename);
System.Drawing.Image photo = System.Drawing.Image.FromStream((Stream)reader);
MemoryStream finalStream = new MemoryStream();
photo.Save(finalStream, ImageFormat.Png);
// translate to image source
PngBitmapDecoder decoder = new PngBitmapDecoder(finalStream, BitmapCreateOptions.PreservePixelFormat,
BitmapCacheOption.Default);
ClientLogo = decoder.Frames[0]; ;
}
}
catch (Exception ex)
{
throw ex;
}
}
请帮助
提前感谢
我不知道你是为哪个平台编程的,但我知道一种方法,它包括添加一个检查,来测量UIImage的宽度和高度。如果它大于某个像素,您可以在UIGraphics的帮助下调整它的大小。它应该看起来像这样:
if (image.Size.Width >= 1000 || image.Size.Height >= 1000)
{
var width = images [i].Size.Width;
var height = images [i].Size.Height;
var newWidth = 900;
var newHeigth = height * newWidth / width;
UIGraphics.BeginImageContext (new SizeF (newWidth, newHeigth));
image.Draw (new RectangleF (0, 0, newWidth, newHeigth));
image = UIGraphics.GetImageFromCurrentImageContext ();
UIGraphics.EndImageContext ();
}
同样,我不知道这种方法是否适用于您正在编程的平台,但您可以尝试一下。
希望这能有所帮助。祝你好运