2012-02-09 2 views
0

버튼을 클릭 한 후 세피아로 사진을 조작하려면 어떻게해야합니까?사진을 세피아로 조작

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    BitmapSource image = (BitmapSource)video.Source; 
    image.Save(DateTime.Now.ToString("ddMMyyyy HHmmss") + ".jpg", ImageFormat.Jpeg); 
    MessageBox.Show("Saved on bin/debug"); 
} 
+0

[Shader library] (http://perspectivefx.codeplex.com/) – MyKuLLSKI

+0

세피아 효과로 사진을 캡처하고 위치에 저장하려면이 버튼을 사용하고 싶습니다. 나는 무엇을 추가해야합니까? – mmmitchell

+0

애플 세피아 쉐이드 라이브러리에서 사진 – MyKuLLSKI

답변

0

당신은 WriteableBitmap을 사용하고 here 같은 unsafe 방법으로 픽셀 데이터의 조작 할 수 있습니다 :

다음은 내 코드입니다.

그럼 당신은 여기

public static void ToSepia(this WriteableBitmap wrb) 
    { 
     // ForEach... 
     // (...ForEach(this WriteableBitmap bmp, Func<int, int, Color, Color> func)...) 
     // 
     wrb.ForEach((x, y, c) => 
     { 
      // Convert color to grayscale. 
      byte grayScale = (byte)((c.R * .3) + (c.G * .59) + (c.B * .11)); 
      // Init new color with taking same alpha. 
      Color newColor = Color.FromArgb(c.A, grayScale, grayScale, grayScale); 
      // Apply sepia and return new color. 
      return new Color() 
      { 
       R = (byte)(newColor.R * 1), 
       G = (byte)(newColor.G * 0.95), 
       B = (byte)(newColor.B * 0.82), 
      }; 
     }); 
    } 

을 사용할 수 있습니다 SL에 대한 도우미 라이브러리이지만, 최근 WPF 버전은 (소스 제어 지점에서 확인)한다. http://writeablebitmapex.codeplex.com/

+0

세피아 효과로 사진을 캡처하고 싶습니다. 내 버튼에 무엇을 추가할까요? – mmmitchell