-1
私は画像を処理するためにこのクラスを作ろうとしています。ビットマップフィールドと、他のメソッドがそのビットマップを使用できるように、ビットマップのパスに渡すコンストラクタが必要でした。だから私はこれを行うことが可能になりたかった:C#フィールドとしてのビットマップクラス?
ImageProcessing image = new ImageProcessing("D:\\image.bmp");
int time_of_processing = image.grayscale();
image.SaveTo("D:\\image2.bmp");
をそしてそう、これは私のコードです:
public class ImageProcessing
{
Bitmap image;
public ImageProcessing(string path)
{
image = new Bitmap(path);
}
public int Grayscale()
{
Stopwatch time = new Stopwatch();
time.Start();
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
Color pixelColor = image.GetPixel(x, y);
int grayScale = (int)((pixelColor.R * 0.21) + (pixelColor.G * 0.72) + (pixelColor.B * 0.07));
Color newColor = Color.FromArgb(grayScale, grayScale, grayScale);
image.SetPixel(x, y, newColor);
}
}
time.Stop();
TimeSpan ts = time.Elapsed;
int milliseconds = ts.Milliseconds + (ts.Seconds * 1000);
return milliseconds;
}
public void SaveTo(string path)
{
image.Save(path);
}
}
、私はこれを持っている場合、Visual Studioは、そのイメージは常にnullになります私に語りました。コンストラクタはそれをどのように動作させるべきでしょうか?
に、実際にあなたが話しているエラーメッセージを生成し、実際のコードを表示...;) – elgonzo
あなたはゴミを収集すべき提出の一つとして、ビットマップを持っているので、私が実装することをお勧めは、 ImageProcessingクラスではIdisposableを使用し、それを使用します。 – loneshark99
このコードは、あなたが話しているエラーを生成しません。それはVSの不具合かもしれません。きれいにして再構築するか、VSを再起動してみてください。唯一のエラーは、あなたがgreyscale()への呼び出しを大文字にしていないことです。 – David