當前位置:編程學習大全網 - 編程語言 - c#編程從圖像中提取數據在問題

c#編程從圖像中提取數據在問題

/// <summary>

/// 獲取指定透明度的圖像

/// </summary>

/// <param name="SourceBitmap">源圖像</param>

/// <param name="OpaCityValue">透明度百分比</param>

/// <returns></returns>

/// <remarks></remarks>

public Bitmap TheTransparentBitmap(Bitmap SourceBitmap, double OpaCityValue)

{

try {

//定義臨時圖片副本

Bitmap ForOutBitmap = new Bitmap(SourceBitmap);

//定義圖像數據

BitmapData bmpDATA = new BitmapData();

//將圖像指定區域數據賦值

bmpDATA = ForOutBitmap.LockBits(new Rectangle(0, 0, SourceBitmap.Width - 1, SourceBitmap.Height - 1), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

//定義用來計算的Byte數組

byte[] BTS = new byte[bmpDATA.Stride * bmpDATA.Height + 1];

//將Byte設置為指定的圖像數據

System.Runtime.InteropServices.Marshal.Copy(bmpDATA.Scan0, BTS, 0, BTS.Length - 1);

//為避免"除數不可為0"而設置的計算用變量

int tmpValue = 0;

//因已經指定為32位ARGB模式,所以每4個排列為 B G R A,A即透明度

for (int I = 0; I <= BTS.Length - 4; I += 4) {

tmpValue = BTS[I + 3] * OpaCityValue;

//修改A透明度

BTS[I + 3] = tmpValue;

}

//完成計算後將Byte組返回給指定的圖像數據

System.Runtime.InteropServices.Marshal.Copy(BTS, 0, bmpDATA.Scan0, BTS.Length - 1);

//解鎖該圖像數據以使調用線程繼續執行

ForOutBitmap.UnlockBits(bmpDATA);

//返回處理後的圖像

return ForOutBitmap;

} catch (Exception ex) {

//如出現異常則返回空值

return null;

}

}

  • 上一篇:數控機床工作主要幹什麽?
  • 下一篇:三歲寶寶毛衣編織從上往下的全部視頻
  • copyright 2024編程學習大全網