在C#中实现Photoshop过滤器

Joa*_*nge 3 .net c# photoshop image bitmap

我知道如何实现它们,但我不知道的是,是否逐像素地应用变换,还是有另一种方式影响整个图像,使用单个调用等?

AFAIK Get.Set Pixel非常慢.我不确定他们是否这样做过.

因此,如果将灰度/去饱和滤波器作为一个简单的情况,那么如何编写呢?

Eug*_*ica 5

您必须锁定图像,然后直接绕过SetPixel方法使用内存. 看到这里,甚至更好这里

例如,您可以将蓝色设置为255,如下所示

   BitmapData bmd=bm.LockBits(new Rectangle(0, 0, 10, 10), System.Drawing.Imaging.ImageLockMode.ReadOnly, bm.PixelFormat);
      int PixelSize=4;
      for(int y=0; y<bmd.Height; y++)
      {
        byte* row=(byte *)bmd.Scan0+(y*bmd.Stride);
        for(int x=0; x<bmd.Width; x++)
        {
          row[x*PixelSize]=255;
        }
      } // it is copied from the last provided link.
Run Code Online (Sandbox Code Playgroud)