문제

나는 그것들을 구현하는 방법을 알고 있지만, 내가 모르는 것은 픽셀로 변환 픽셀을 적용 할 것인지 아니면 전체 이미지에 영향을 미치거나 단일 통화 등을 사용하는 또 다른 방법이 있습니까?

afaik get.set 픽셀은 매우 느립니다. 그들이 이런 식으로했는지 확실하지 않습니다.

따라서 간단한 사례로서 그레이 스케일/불포화 필터라면 어떻게 쓸 것인가?

도움이 되었습니까?

해결책

이미지를 잠그고 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.

다른 팁

더 빠른 성능을 달성하기 위해 이미지뿐만 아니라 모든 .NET WPF 비주얼 객체와 함께 작동하는 WPF의 픽셀 셰이더 효과 구현을 확인할 수 있습니다.

그러한 효과에 대한 몇 가지 기본 구현 단계를 설명하는 기사를 살펴보십시오.

http://bursjootech.blogspot.com/2008/06/grayscale-effect-pixel-shader-effect-in.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top