程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 從圖像轉換到byte[]數組的幾種方法

從圖像轉換到byte[]數組的幾種方法

編輯:關於ASP.NET
// 性能最高,其數組和像素一一對應
public static void test1(Image img)
        {
            Bitmap bmp = new Bitmap(img);
            BitmapData bitmapData = bmp.LockBits(new Rectangle(new Point(0, 0), img.Size), 

ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            byte[] BGRValues = new byte[bitmapData.Stride * bitmapData.Height];
            IntPtr Ptr = bitmapData.Scan0;
            System.Runtime.InteropServices.Marshal.Copy(Ptr, BGRValues, 0, 

BGRValues.Length);
            bmp.UnlockBits(bitmapData);
        }
// 性能較低,數組內容較少,內容未知
        public static void test2(Image img)
        {
            System.Drawing.ImageConverter ic = new System.Drawing.ImageConverter();
            byte[] btImage1 = new byte[0];
            btImage1 = (byte[])ic.ConvertTo(img, btImage1.GetType());
        }
// 性能較低,數組內容為圖片格式內容,格式未知
        public static void test3(Image img)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            img.Save(ms,ImageFormat.Bmp);
            byte[] byteImage = new Byte[0];
            byteImage = ms.ToArray();
        }

下面說說他們的特點

test1和test3性能十分接近,test2性能要比前2個明顯低一些,應為它們都是內存操作,當然快了。

test3在單次各種測試候都比test1要快一點點,真的是一點點,但是在做5000次測試時,test3就明顯 拉開了距離;

那麼可以看出test3在某條語句上耗時了,但可能不是數組操作,比較在內存裡,我個人認為是 ImageFormat編碼的耗時,當然,你用ImageFormat.Png獲得的byte[]長度明顯變短,

但是耗時也明顯增加。

test2一如既往的明顯慢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved