C# 图片操作
图片代码操作:
根据图片的相对路径 获取Image对象:
/// <summary>
/// 根据图片的相对路径 获取Image对象
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/star.png")</param>
/// <returns></returns>
public static Image GetImage(string imgPath)
{
if (File.Exists(imgPath))
{
Image im = new Image();
im.Source = GetBitmapImage(imgPath);
return im;
}
else
return null;
}
根据图片的相对路径 返回 BitmapImage对象的实例化:
/// <summary>
/// 根据图片的相对路径 返回 BitmapImage对象的实例化
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/star.png")</param>
/// <returns></returns>
public static BitmapImage GetBitmapImage(string imgPath)
{
try
{
if (!imgPath.StartsWith("/"))
{
imgPath = "/" + imgPath;
}
return new BitmapImage(new Uri("Pack://application:,,," + imgPath));
}
catch
{
return EmptyImageSource;
}
}
根据图片的相对路径 获取ImageBrush对象:
/// <summary>
/// 根据图片的相对路径 获取ImageBrush对象 (此对象资源可以直接用于绑定控件的Background属性)
/// </summary>
/// <param name="imgPath">图片的相对路径(如:@"/images/star.png")</param>
/// <returns></returns>
public static ImageBrush GetImageBrush(string imgPath)
{
if (File.Exists(imgPath))
{
ImageBrush ib = new ImageBrush();
ib.ImageSource = 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(File.Exists(filePath))
byteArray = File.ReadAllBytes(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();
bmp.BeginInit();
bmp.StreamSource = new MemoryStream(byteArray);
bmp.EndInit();
}
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 = bmp.StreamSource;
if (sMarket != null && sMarket.Length > 0)
{
sMarket.Position = 0;
using (BinaryReader br = new BinaryReader(sMarket))
{
byteArray = br.ReadBytes((int)sMarket.Length);
}
}
}
catch
{
}
return byteArray;
}
Stream保存图片:
FileStream fs = new FileStream("A.jpg", FileMode.Create, FileAccess.ReadWrite);
Stream MyStream = new MemoryStream((byte[])imageBytes); //取出的byte[]数组
int read = 0;
byte[] Mybyte = new byte[1024];
do
{
read = MyStream.Read(Mybyte,0,1024);
fs.Write(Mybyte,0,read);
} while (read > 0);
MyStream.Flush();
MyStream.Close();
fs.Flush();
fs.Close();
图片通过CGI获取保存到本地快照:
public string Address = "url address";
public void SavefromWeb()
{
FileStream fs = new FileStream("D:\\Image.jpg",FileMode.Create,FileAccess.ReadWrite);
HttpWebRequest MyHttpWebRequest = null;
HttpWebResponse MyHttpWebResponse = null;
Stream MyStream = null;
try
{
MyHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(Address);
MyHttpWebResponse = (HttpWebResponse)MyHttpWebRequest.GetResponse();
MyStream = MyHttpWebResponse.GetResponseStream();
}
catch(Exception)
{
}
int read = 0;
byte[] Mybyte=new byte[1024];
do
{
read = MyStream.Read(Mybyte,0,1024);
fs.Write(Mybyte,0,read);
}while(read>0);
MyStream.Flush();
MyStream.Close();
MyHttpWebResponse.Close();
fs.Flush();
fs.Close();
}
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。