我想更改图像的亮度值。 YouTube也有很多视频,但视频在c#中使用了picturebox。我想用wpf中的图像制作。但是wpf没有为image.source使用位图。需要BitmapImage。我尝试了一些东西,但没有工作。
亮度代码:
public static Bitmap AdjustBrightness(Bitmap Image,int Value)
{
Bitmap TempBitmap = Image;
float FinalValue = (float)Value / 255.0f;
Bitmap NewBitmap = new Bitmap(TempBitmap.Width,TempBitmap.Height);
Graphics NewGraphics = Graphics.FromImage(NewBitmap);
float[][] FloatColorMatrix =
{
new float[] {1,0,0,0,0},
new float[] {0,1,0,0,0},
new float[] {0,0,1,0,0},
new float[] {0,0,0,1,0},
new float[] {FinalValue,FinalValue,FinalValue,1,1},
};
ColorMatrix NewColorMatrix = new ColorMatrix(FloatColorMatrix);
ImageAttributes Attributes = new ImageAttributes();
Attributes.SetColorMatrix(NewColorMatrix);
NewGraphics.DrawImage(TempBitmap, new Rectangle(0, 0, TempBitmap.Width, TempBitmap.Height), 0, 0, TempBitmap.Width, TempBitmap.Height, GraphicsUnit.Pixel, Attributes);
Attributes.Dispose();
NewGraphics.Dispose();
return NewBitmap;
}
如果我尝试返回“无法将类型'System.Drawing.Bitmap'隐式转换为'System.Windows.Media.ImageSource'”:
img_goruntucontrol.Source = goruntu.AdjustBrightness(img_bitmap, Int32.Parse(slider_brig.Value.ToString()));
所以我使用位图来映射源:
BitmapImage BitmapToImageSource(Bitmap bitmap)
{
using (MemoryStream memory = new MemoryStream())
{
bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
memory.Position = 0;
BitmapImage bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.StreamSource = memory;
bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
bitmapimage.EndInit();
return bitmapimage;
}
}
现在我尝试像这样的图像源:
img_goruntucontrol.Source = BitmapToImageSource(goruntu.AdjustBrightness(img_bitmap, Int32.Parse(slider_brig.Value.ToString())));
我的位图代码:Bitmap img_bitmap = new Bitmap(image_source);
image_source是一个字符串值。
我尝试运行返回“不支持URI格式”。对于img_bitmap。
image_source值:"file:///C:/Users/kamilkunt/Documents/Dentatech/goruntuler/9/3512.jpg"