C# 如何从指针获取图片
时间: 2023-07-27 09:23:15 浏览: 201
C#获得图片的实例代码
在 C# 中,可以使用 `Bitmap` 类来表示一张图片。获取图片的方法可以通过指针来实现,具体步骤如下:
1. 定义指针变量 `ptr`,并将指针指向图片数据的起始位置。可以使用 `fixed` 关键字固定一个特定的内存位置,然后使用 `Marshal` 类的 `UnsafeAddrOfPinnedArrayElement` 方法获取指针。
```
Bitmap image = new Bitmap("image.jpg");
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
BitmapData bmpData = image.LockBits(rect, ImageLockMode.ReadOnly, image.PixelFormat);
byte[] imageData = new byte[bmpData.Stride * bmpData.Height];
Marshal.Copy(bmpData.Scan0, imageData, 0, imageData.Length);
fixed (byte* ptr = imageData)
{
// 在这里使用指针访问图片数据
}
image.UnlockBits(bmpData);
```
2. 使用指针操作图片数据。可以根据图片的像素格式,使用不同的方式来访问像素值。例如,如果图片像素格式为 `Format24bppRgb`,那么每个像素占用 3 个字节,可以按照以下方式访问像素值:
```
byte* p = ptr;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
byte b = *p++;
byte g = *p++;
byte r = *p++;
// 在这里使用 r、g、b 值
}
}
```
3. 记得在使用完指针后释放相应的资源,例如解锁图片数据。
```
image.UnlockBits(bmpData);
```
阅读全文