JPG PNG GIF BMP图片格式的区别:
类型 | 优点 | 缺点 | 应用场景 | 相同图片大小比较 |
BMP | 无损压缩,图质最好 | 文件太大,不利于网络传输 | 152K | |
GIF | 动画存储格式 | 最多256色,画质差 | 53K | |
PNG | 可保存透明背景的图片 | 画质中等 | 202K | |
JPG | 文件小,利于网络传输 | 画质损失 | 车牌识别 | 84K |
图片代码操作:
根据图片的相对路径 获取Image对象:
/// <summary>
/// 根据图片的相对路径 获取Image对象
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/")</param>
/// <returns></returns>
public static Image GetImage(string imgPath)
{
if ((imgPath))
{
Image im = new Image();
= GetBitmapImage(imgPath);
return im;
}
else
return null;
}
根据图片的相对路径 返回 BitmapImage对象的实例化:
/// <summary>
/// 根据图片的相对路径 返回 BitmapImage对象的实例化
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/")</param>
/// <returns></returns>
public static BitmapImage GetBitmapImage(string imgPath)
{
try
{
if (!("/"))
{
imgPath = "/" + imgPath;
}
return new BitmapImage(new Uri("Pack://application:,,," + imgPath));
}
catch
{
return null;
}
}
根据图片的相对路径 获取ImageBrush对象:
/// <summary>
/// 根据图片的相对路径 获取ImageBrush对象 (此对象资源可以直接用于绑定控件的Background属性)
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/")</param>
/// <returns></returns>
public static ImageBrush GetImageBrush(string imgPath)
{
if ((imgPath))
{
ImageBrush ib = new ImageBrush();
= GetBitmapImage(imgPath);
return ib;
}
else
return null;
}
在Path中读取图片byte[]:
/// <summary>
/// 根据图片的路径解析成图片资源
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static byte[] BitmapImageToByteArray(String filePath)
{
byte[] byteArray = null ;
if((filePath))
byteArray = (filePath);
return byteArray;
}
byte[]转BitmapImage:
/// <summary>
/// 解析字节数组成图片
/// </summary>
/// <param name="byteArray"></param>
/// <returns></returns>
public static BitmapImage ByteArrayToBitmapImage(byte[] byteArray)
{
BitmapImage bmp = null;
try
{
bmp = new BitmapImage();
();
= new MemoryStream(byteArray);
();
}
catch
{
bmp = null;
}
return bmp;
}
BitmapImage转byte[]:
/// <summary>
/// 图片数据解析成字节流数组(用于存储到数据库)
/// </summary>
/// <param name="bmp"></param>
/// <returns></returns>
public static byte[] BitmapImageToByteArray(BitmapImage bmp)
{
byte[] byteArray = null;
try
{
Stream sMarket = ;
if (sMarket != null && > 0)
{
= 0;
using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = ((int));
}
}
}
catch
{
}
return byteArray;
}
将Bitmap对象转换成bitmapImage对象:
/// <summary>
/// 将Bitmap对象转换成bitmapImage对象
/// </summary>
/// <param name="bitmap"></param>
/// <returns></returns>
public BitmapImage ConvertBitmapToBitmapImage(Bitmap bitmap)
{
MemoryStream stream = new MemoryStream();
(stream, );
BitmapImage image = new BitmapImage();
();
= stream;
();
return image;
}
将bitmapImage对象转换成Bitmap对象:
/// <summary>
/// 将bitmapImage对象转换成Bitmap对象
/// </summary>
/// <param name="bitmapImage"></param>
/// <returns></returns>
public static BitmapImageToBitmap(BitmapImage bitmapImage)
{
using ( outStream = new ())
{
BitmapEncoder enc = new BmpBitmapEncoder();
((bitmapImage));
(outStream);
bitmap = new (outStream);
return bitmap;
}
}
bitmap转换成ImageSource:
[DllImport("", SetLastError = true)]
private static extern bool DeleteObject(IntPtr hObject);
/// <summary>
/// 从bitmap转换成ImageSource
/// </summary>
/// <param name="icon"></param>
/// <returns></returns>
public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)
{
IntPtr hBitmap = ();
ImageSource wpfBitmap = (
hBitmap,
,
,
());
if (!DeleteObject(hBitmap))//记得要进行内存释放。否则会有内存不足的报错。
{
throw new .Win32Exception();
}
return wpfBitmap;
}
从Bitmap转换成BitmapSource:
/// <summary>
/// 从Bitmap转换成BitmapSource
/// </summary>
/// <param name="bmp"></param>
/// <returns></returns>
public static BitmapSource ChangeBitmapToBitmapSource(Bitmap bmp)
{
BitmapSource returnSource;
try
{
returnSource = ((), , , ());
}
catch
{
returnSource = null;
}
return returnSource;
}
从Icon到ImageSource的转换:
/// <summary>
/// 从Icon到ImageSource的转换
/// </summary>
public ImageSource ChangeIconToImageSource(Icon icon)
{
ImageSource imageSource = (
,
,
());
return imageSource;
}
Stream保存图片:
FileStream fs = new FileStream("", , );
Stream MyStream = new MemoryStream((byte[])imageBytes); //取出的byte[]数组
int read = 0;
byte[] Mybyte = new byte[1024];
do
{
read = (Mybyte,0,1024);
(Mybyte,0,read);
} while (read > 0);
();
();
();
();
图片通过CGI获取保存到本地快照:
public string Address = "url address";
public void SavefromWeb()
{
FileStream fs = new FileStream("D:\\",,);
HttpWebRequest MyHttpWebRequest = null;
HttpWebResponse MyHttpWebResponse = null;
Stream MyStream = null;
try
{
MyHttpWebRequest = (HttpWebRequest)(Address);
MyHttpWebResponse = (HttpWebResponse)();
MyStream = ();
}
catch(Exception)
{
}
int read = 0;
byte[] Mybyte=new byte[1024];
do
{
read = (Mybyte,0,1024);
(Mybyte,0,read);
}while(read>0);
();
();
();
();
();
}
参考:wpf 图片操作类 ImageBrush BitmapImage - ﹎蓝言觅ぷ雨 - 博客园
WPF(1)---图片的获取与存储 - Probably - 博客园
JPG PNG GIF BMP图片格式的区别_Wanda && Aidem -****博客_bmp jpg png 区别