zoukankan      html  css  js  c++  java
  • bytetobmp and bmptobyte(Image)

    有很多种方法处理字节到位图以及位图处理到字节。
    但是不知道为什么用位图转成的字节却不能被方法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(480640, PixelFormat.Format24bppRgb);
                
    //vTemp.SetResolution(600f, 600f);

                Graphics vGrap 
    = Graphics.FromImage(vTemp);

                vGrap.DrawImage(vOrgBmp, 
    new Rectangle(00480640), 00, vOrgBmp.Width, vOrgBmp.Height, GraphicsUnit.Pixel);

                vGrap.Save();

                
    return vTemp;
            }


            
    public static Bitmap ConvertToBmp(byte[] pDatas)
            
    {
                Bitmap bmp 
    = new Bitmap(480640);

                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(00, 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;
            }

        }

    }

  • 相关阅读:
    设计模式
    Junit单元测试
    数组存储和链表存储
    java新特型
    List&&Set
    Map
    File文件
    1588. 所有奇数长度子数组的和
    2秒后跳转到某页面
    图片轮播/倒计时--windows对象(setInterval)
  • 原文地址:https://www.cnblogs.com/si812cn/p/1229932.html
Copyright © 2011-2022 走看看