您的位置:首页 > 编程语言 > C#

C# 转换函数 (Stream to Byte[],Byte to Image,Image to Byte[],Image缩放,Byte[] to Bitmap)

2017-10-11 15:33 363 查看
1.Stream转byte[]
 
public
byte[]
StreamToByteArr(Stream
stream)
[align=left] {[/align]

  
byte[]
bytes
=
new
byte[stream.Length];
//创建byte数组

   
stream.Read(bytes,
0,
bytes.Length);
//将Stream读入byte数组

  
stream.Seek(0,
SeekOrigin.Begin);//
将流指向起始位置
   
return
bytes;

 }

2. byte[]转Image
public
static
Image
GetImageByBytes(byte[]
bytes)
[align=left]{[/align]
 
Image
photo
=
null;
 
using
(MemoryStream
ms
=
new
MemoryStream(bytes))
[align=left]  {[/align]
     
ms.Write(bytes,
0,
bytes.Length);
    
photo
=
Image.FromStream(ms,
true);
[align=left]   }[/align]
   
return
photo;

}

3.Image转Byte[]
public
byte[]
GetByteImage(Image
img)
[align=left]{[/align]
 
byte[]
bt
=
null;
 
if
(!img.Equals(null))
[align=left]  {[/align]
   
using
(MemoryStream
mostream
=
new
MemoryStream())
[align=left]    {[/align]
     
Bitmap
bmp
=
new
Bitmap(img);
     
bmp.Save(mostream,
System.Drawing.Imaging.ImageFormat.Bmp);
     
bt
=
new
byte[mostream.Length];
     
mostream.Position
= 0;
     
mostream.Read(bt,
0,
Convert.ToInt32(bt.Length));
[align=left]     }[/align]
[align=left]  }[/align]
 
return
bt;

}

4.Image图片缩放
public
Image
pictureProcess(Image
sourceImage,
int
targetWidth,
int
targetHeight)
[align=left]{[/align]
 
int
width;//图片最终的宽 
 
int
height;//图片最终的高 
 
try
[align=left]  {[/align]
   
System.Drawing.Imaging.ImageFormat
format
=
sourceImage.RawFormat;
   
Bitmap
targetPicture
=
new
Bitmap(targetWidth,
targetHeight);
   
Graphics
graphics
=
Graphics.FromImage(targetPicture);
   
graphics
.Clear(Color.White);
   
//计算缩放图片的大小 
   
if
(sourceImage.Width
>
targetWidth
&&
sourceImage.Height
<=
targetHeight)
[align=left]    {[/align]
     
width
=
targetWidth;
     
height
= (width
*
sourceImage.Height)
/
sourceImage.Width;
[align=left]    }[/align]
   
else
if
(sourceImage.Width
<=
targetWidth
&&
sourceImage.Height
>
targetHeight)
[align=left]    {[/align]
     
height
=
targetHeight;
    
 
width
= (height
*
sourceImage.Width)
/
sourceImage.Height;
[align=left]    }[/align]
    
else
if
(sourceImage.Width
<=
targetWidth
&&
sourceImage.Height
<=
targetHeight)
[align=left]    {[/align]
     
width
=
sourceImage.Width;
     
height
=
sourceImage.Height;
[align=left]    }[/align]
   
else
[align=left]    {[/align]
     
width
=
targetWidth;
     
height
= (width
*
sourceImage.Height)
/
sourceImage.Width;
     
if
(height
>
targetHeight)
[align=left]      {[/align]
       
height
=
targetHeight;
       
width
= (height
*
sourceImage.Width)
/
sourceImage.Height;
[align=left]       }[/align]
[align=left]    }[/align]
    
graphics
.DrawImage(sourceImage,
(targetWidth
-
width) / 2, (targetHeight
-
height) / 2,
width,
height);
    
sourceImage.Dispose();
    
return
targetPicture;
[align=left]  }[/align]
 
catch
(Exception
ex)
[align=left]  {[/align]
[align=left]  }[/align]
  
return
null;

}

5.byte[] 转bitmap
 public
static
Bitmap
BytesToBitmap(byte[]
Bytes)
[align=left]{[/align]
   
MemoryStream
stream
=
null;
  
try
[align=left]   {[/align]
     
stream
=
new
MemoryStream(Bytes);
     
return
new
Bitmap((Image)new
Bitmap(stream));
[align=left]    }[/align]
   
catch
(ArgumentNullException
ex)
[align=left]    {[/align]
       
throw
ex;
[align=left]    }[/align]
    
catch
(ArgumentException
ex)
[align=left]     {[/align]
        
throw
ex;
[align=left]     }[/align]
     
finally
[align=left]     {[/align]
        
stream.Close();
[align=left]      }[/align]

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#
相关文章推荐