单击该按钮后,如何将照片处理为深褐色。
下面是我的代码:
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");
}发布于 2012-02-10 23:26:41
您可以使用WriteableBitmap并以unsafe方式操作它的像素数据,就像here一样。
然后你就可以使用
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/
https://stackoverflow.com/questions/9214898
复制相似问题