C#에서 Photoshop 필터 구현
문제
나는 그것들을 구현하는 방법을 알고 있지만, 내가 모르는 것은 픽셀로 변환 픽셀을 적용 할 것인지 아니면 전체 이미지에 영향을 미치거나 단일 통화 등을 사용하는 또 다른 방법이 있습니까?
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
제휴하지 않습니다 StackOverflow