How to convert ImageSource to Byte array?

后端 未结 6 595
眼角桃花
眼角桃花 2020-11-30 14:20

I use LeadTools for scanning.

I want to convert scanning image to byte.

void twainSession_AcquirePage(object sender, TwainAcquirePageEventArgs e)
 {
         


        
6条回答
  •  时光说笑
    2020-11-30 15:11

    Unless you explicitly need an ImageSource object, there's no need to convert to one. You can get a byte array containing the pixel data directly from Leadtools.RasterImage using this code:

    int totalPixelBytes = e.Image.BytesPerLine * e.Image.Height;
    byte[] byteArray = new byte[totalPixelBytes];
    e.Image.GetRow(0, byteArray, 0, totalPixelBytes);
    

    Note that this gives you only the raw pixel data.

    If you need a memory stream or byte array that contains a complete image such as JPEG, you also do not need to convert to source. You can use the Leadtools.RasterCodecs class like this:

    RasterCodecs codecs = new RasterCodecs();
    System.IO.MemoryStream memStream = new System.IO.MemoryStream();
    codecs.Save(e.Image, memStream, RasterImageFormat.Jpeg, 24);
    

提交回复
热议问题