有很多种方法处理字节到位图以及位图处理到字节。
但是不知道为什么用位图转成的字节却不能被方法Image.FromStream读取,但可以被Bitmap.FromStream读取。
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace Sicnco.Utility


{
public class SuperImage

{
public SuperImage()

{
}

private static Bitmap ConvertToRgb(Image pOrgImage)

{
Bitmap vOrgBmp = new Bitmap(pOrgImage);

//if (vOrgBmp.Width > vOrgBmp.Height)
//{
// vOrgBmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
//}

Bitmap vTemp = new Bitmap(480, 640, PixelFormat.Format24bppRgb);
//vTemp.SetResolution(600f, 600f);

Graphics vGrap = Graphics.FromImage(vTemp);

vGrap.DrawImage(vOrgBmp, new Rectangle(0, 0, 480, 640), 0, 0, vOrgBmp.Width, vOrgBmp.Height, GraphicsUnit.Pixel);

vGrap.Save();

return vTemp;
}

public static Bitmap ConvertToBmp(byte[] pDatas)

{
Bitmap bmp = new Bitmap(480, 640);

BitmapData bData = bmp.LockBits(new Rectangle(new Point(), bmp.Size),
ImageLockMode.WriteOnly,
PixelFormat.Format24bppRgb);

// Copy the bytes to the bitmap object
System.Runtime.InteropServices.Marshal.Copy(pDatas, 0, bData.Scan0, pDatas.Length);

bmp.UnlockBits(bData);

return bmp;

}

//public static Bitmap ConvertToBmp(byte[] pDatas)
//{
// MemoryStream vStream = new MemoryStream(pDatas);

// Bitmap vBmp = Bitmap.FromStream(vStream);

// vStream.Close();

// vStream = null;

// return vBmp;
//}

public static byte[] ConvertToBytes(Image pOrgImage)

{
Bitmap vBmp = ConvertToRgb(pOrgImage);

BitmapData vBmpData = vBmp.LockBits(new Rectangle(0, 0, vBmp.Width, vBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

IntPtr vPtr = vBmpData.Scan0;

int vBytes = vBmpData.Stride * vBmp.Height;

byte[] vDatas = new byte[vBytes];

System.Runtime.InteropServices.Marshal.Copy(vPtr, vDatas, 0, vBytes);

vBmp.UnlockBits(vBmpData);

return vDatas;
}

//public static byte[] ConvertToBytes(Image pOrgImage)
//{
// Bitmap vBmp = ConvertToRgb(pOrgImage);

// MemoryStream vStream = new MemoryStream();

// vBmp.Save(vStream, ImageFormat.Jpeg);

// byte[] vBytes = vStream.GetBuffer();

// vBmp.Dispose();

// vStream.Close();

// vStream = null;

// return vBytes;
//}


private static ImageCodecInfo GetEncoderInfo(string mimeType)

{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)

{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
}
