How to convert a Bitmap Image to IntPtr in C#?
bitmap, c#, intptr
Solution
Try this,
IntPtr pval = IntPtr.Zero;
System.Drawing.Imaging.BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
try
{
pval=bd.Scan0;
...
}
finally
{
bmp.UnlockBits(bd);
}
Problem
I made this from an example i saw, it never threw any error, but the image is displayed as grey. Is there a better way to do this? ``` private unsafe void menuItem7_Click(object sender, EventArgs e) { var settings = Utility.GatherLocalSettings(); openFileDialog1.InitialDirectory = settings.SavePath; openFileDialog1.Filter = "Scan Files (*.jpg)|*.jpg"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { byte[] openFile = File.ReadAllBytes(openFileDialog1.FileName); fixed (byte* p = openFile) { IntPtr img = (IntPtr)p; frmContainer newScan = new frmContainer(img); newScan.MdiParent = this; newScan.Text = Path.GetFileName(openFileDialog1.FileName) + " [Saved]"; newScan.Show(); } } } ``` PS: I checked the csproj to allow unsafe code in the build.