gpt4 book ai didi

c# - gdip 图像直接在我的本地驱动器中保存 intptr

转载 作者:太空狗 更新时间:2023-10-29 20:41:17 28 4
gpt4 key购买 nike

我有这段代码可以从扫描仪获取图像文件并将其保存在本地磁盘上:

                            IntPtr img = (IntPtr)pics[i];
SetStyle(ControlStyles.DoubleBuffer, false);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.Opaque, true);
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.UserPaint, true);
bmprect = new Rectangle(0, 0, 0, 0);
bmpptr = GlobalLock(img);
pixptr = GetPixelInfo(bmpptr);
Gdip.SaveDIBAs(@"C:\", bmpptr, pixptr);

问题出在 Gdip.SaveDIBAs(@"C:\", bmpptr, pixptr);.保存对话框。 enter image description here

我想放弃这个对话框并直接将文件保存在我的驱动器中。

**Updated:**



public static bool SaveDIBAs(string picname, IntPtr bminfo, IntPtr pixdat)
{
SaveFileDialog sd = new SaveFileDialog();

sd.FileName = picname;
sd.Title = "Save bitmap as...";
sd.Filter =
"Bitmap file (*.bmp)|*.bmp|TIFF file (*.tif)|*.tif|JPEG file (*.jpg)|*.jpg|PNG file (*.png)|*.png|GIF file (*.gif)|*.gif|All files (*.*)|*.*";
sd.FilterIndex = 1;

return true;
}
for (int i = 0; i < pics.Count; i++)
{
IntPtr img = (IntPtr)pics[i];


SetStyle(ControlStyles.DoubleBuffer, false);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.Opaque, true);
SetStyle(ControlStyles.ResizeRedraw, true);
SetStyle(ControlStyles.UserPaint, true);

bmprect = new Rectangle(0, 0, 0, 0);

bmpptr = GlobalLock(img);
pixptr = GetPixelInfo(bmpptr);

SaveDIBAs(@"C:\a.jpg", bmpptr, pixptr);
}

最佳答案

我认为您应该只使用内置的ImageBitmap 类型,而不是直接调用gdip.dll 的函数。

IntPtr img = (IntPtr)pics[i];
using (Bitmap bmp = Image.FromHBitmap(img))
{
bmp.Save(@"C:\a.jpg", ImageFormat.Jpeg);
}

关于c# - gdip 图像直接在我的本地驱动器中保存 intptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465256/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com