我正在设置C#中的图像对比度,但我收到错误说
“System.Drawing.Image不包含。的定义 'GetPixel', 'LockImage'“
以下代码。
public static Bitmap AdjustContrast(Bitmap OriginalImage, float Value)
{
Bitmap NewBitmap = new Bitmap(OriginalImage.Width, OriginalImage.Height);
BitmapData NewData =
Image.LockImage(NewBitmap);
BitmapData OldData = Image.LockImage(OriginalImage);
int NewPixelSize = Image.GetPixelSize(NewData);
int OldPixelSize = Image.GetPixelSize(OldData);
Value = (100.0f + Value) / 100.0f;
Value *= Value;
for (int x = 0; x < NewBitmap.Width; ++x)
{
for (int y = 0; y < NewBitmap.Height; ++y)
{
Color Pixel = Image.GetPixel(OldData, x, y, OldPixelSize);
float Red = Pixel.R / 255.0f;
float Green = Pixel.G / 255.0f;
float Blue = Pixel.B / 255.0f;
Red = (((Red - 0.5f) * Value) + 0.5f) * 255.0f;
Green = (((Green - 0.5f) * Value) + 0.5f) * 255.0f;
Blue = (((Blue - 0.5f) * Value) + 0.5f) * 255.0f;
Image.SetPixel(NewData, x, y,
Color.FromArgb(MathHelper.Clamp((int)Red, 255, 0),
MathHelper.Clamp((int)Green, 255, 0),
MathHelper.Clamp((int)Blue, 255, 0)),
NewPixelSize);
}
}
Image.UnlockImage(NewBitmap, NewData);
Image.UnlockImage(OriginalImage, OldData);
return NewBitmap;
}
任何建议都会有所帮助。
答案 0 :(得分:2)
您收到该错误是因为编译器看到了Image并尝试在GetPixel
类中查找LockImage
和System.Drawing.Image
方法。那个方法在那个类中不存在,所以你得到了错误。
您好像是从James Craig's blog获取代码,特别是this page。在他的片段底部,他指出某些方法来自他的实用程序库,并且他具体命名为LockImage
。如果你还没有这样做,请下载他的实用程序库(我链接的页面上有一个链接),我想你会找到这个方法并GetPixel
。
当您使用实用程序库时,请确保指定名称空间以消除实用程序库中的类以及标准Microsoft库中的类的歧义。