第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將圖像轉(zhuǎn)換為灰度

將圖像轉(zhuǎn)換為灰度

C#
翻閱古今 2019-08-08 15:40:37
將圖像轉(zhuǎn)換為灰度有沒有辦法將圖像轉(zhuǎn)換為每像素格式16位灰度,而不是將每個r,g和b分量設(shè)置為亮度。我目前有一個文件bmp。Bitmap c = new Bitmap("filename");我想要一個Bitmap d,即c的灰度版本。我確實看到一個包含System.Drawing.Imaging.PixelFormat的構(gòu)造函數(shù),但我不明白如何使用它。我是Image Processing和相關(guān)C#庫的新手,但對C#本身有一定的經(jīng)驗。任何幫助,參考在線來源,提示或建議將不勝感激。
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

“我想要一個Bitmap d,即灰度。我確實看到一個包含System.Drawing.Imaging.PixelFormat的consructor,但我不明白如何使用它。”

這是怎么做的

Bitmap grayScaleBP = new 
         System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);

編輯:轉(zhuǎn)換為灰度

             Bitmap c = new Bitmap("fromFile");
             Bitmap d;
             int x, y;

             // Loop through the images pixels to reset color.
             for (x = 0; x < c.Width; x++)
             {
                 for (y = 0; y < c.Height; y++)
                 {
                     Color pixelColor = c.GetPixel(x, y);
                     Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
                     c.SetPixel(x, y, newColor); // Now greyscale
                 }
             }
            d = c;   // d is grayscale version of c

來自switchonthecode的更快版本跟隨鏈接進行全面分析:

public static Bitmap MakeGrayscale3(Bitmap original){
   //create a blank bitmap the same size as original
   Bitmap newBitmap = new Bitmap(original.Width, original.Height);

   //get a graphics object from the new image
   Graphics g = Graphics.FromImage(newBitmap);

   //create the grayscale ColorMatrix
   ColorMatrix colorMatrix = new ColorMatrix(
      new float[][] 
      {
         new float[] {.3f, .3f, .3f, 0, 0},
         new float[] {.59f, .59f, .59f, 0, 0},
         new float[] {.11f, .11f, .11f, 0, 0},
         new float[] {0, 0, 0, 1, 0},
         new float[] {0, 0, 0, 0, 1}
      });

   //create some image attributes
   ImageAttributes attributes = new ImageAttributes();

   //set the color matrix attribute
   attributes.SetColorMatrix(colorMatrix);

   //draw the original image on the new image
   //using the grayscale color matrix
   g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
      0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);

   //dispose the Graphics object
   g.Dispose();
   return newBitmap;}


查看完整回答
反對 回復(fù) 2019-08-08
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

Bitmap d = new Bitmap(c.Width, c.Height);for (int i = 0; i < c.Width; i++){
    for (int x = 0; x < c.Height; x++)
    {
        Color oc = c.GetPixel(i, x);
        int grayScale = (int)((oc.R * 0.3) + (oc.G * 0.59) + (oc.B * 0.11));
        Color nc = Color.FromArgb(oc.A, grayScale, grayScale, grayScale);
        d.SetPixel(i, x, nc);
    }}

這樣它也可以保持alpha通道。 


查看完整回答
反對 回復(fù) 2019-08-08
?
冉冉說

TA貢獻1877條經(jīng)驗 獲得超1個贊

ToolStripRenderer類中有一個靜態(tài)方法,名為CreateDisabledImage。它的用法很簡單:

Bitmap c = new Bitmap("filename");Image d = ToolStripRenderer.CreateDisabledImage(c);

它使用與接受答案中的矩陣稍微不同的矩陣,并且還將其乘以0.7的透明度,因此效果與僅灰度略有不同,但如果您想讓圖像變灰,那么它是最簡單的最佳方案。


查看完整回答
反對 回復(fù) 2019-08-08
  • 3 回答
  • 0 關(guān)注
  • 513 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號