下面是我的代碼:
private double GetImageValue(Bitmap Image)
{
double ImageValue = 0;
for (int X = 0; X < Image.Width; X )
{
for (int Y = 0; Y < Image.Height; Y )
{
Color CurrentPixel = Image.GetPixel(X, Y);
ImageValue = CurrentPixel.A CurrentPixel.B CurrentPixel.G CurrentPixel.R;
}
}
return ImageValue;
}
該代碼回傳影像中每個像素的總值。有沒有辦法加快程式?
uj5u.com熱心網友回復:
像這樣的東西:
private double GetImageValue(Bitmap image)
{
double imageValue = 0;
var rect = new Rectangle(0, 0, image.Width, image.Height);
var bmpData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
var ptr = bmpData.Scan0;
var bytes = Math.Abs(bmpData.Stride) * image.Height;
var values = new byte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, values, 0, bytes);
for (int y = 0; y < image.Height; y )
{
int lineStart = y * Math.Abs(bmpData.Stride);
for (int x = 0; x < image.Width * 3; x )
{
imageValue = values[lineStart x];
}
}
image.UnlockBits(bmpData);
return imageValue;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349125.html
上一篇:代碼未在影像上顯示長軸和短軸
