VC++关于如何用GDI+取得图片的Hbitmap

VC++关于如何用GDI+取得图片的Hbitmap,第1张

没有简单直接的办法。

比较曲折的办法有两个,一个是通过DC绘制获取:

Image pImage = Image::FromFile(L"c:\\testgif");

Status status = pImage->GetLastStatus();

if(Ok == status)

{

   CDC dc;

   dcCreateCompatibleDC(NULL);

   CBitmap bitmap;

   bitmapCreateCompatibleBitmap(&dc, pImage->GetWidth(), pImage->GetHeight());

   CBitmap pbmpOld = dcSelectObject(&bitmap);

   Graphics graphics(dcm_hDC);

   status = graphicsGetLastStatus();

   if(Ok == status)

   {

      graphicsDrawImage(pImage, 0, 0);

      // enjoy of bitmap;

   }

   dcSelectObject(pbmpOld);

}

一个是用同样是GDI+的Bitmap重新读取文件或读取Image保存的文件:

Bitmap pBitmap = Bitmap::FromFile(L"c:\\testgif");

Status status = pBitmap->GetLastStatus();

if(Ok == status)

{

   HBITMAP hBitmap = NULL;

   status = pBitmap->GetHBITMAP(Color(0,0,0), &hBitmap);

   if(Ok == status)

   {

      // enjoy of bitmap;

   }

}

//这是一个上传的例子,上传其他文件都一样

string strFileFullName = SystemIOPathGetFileName(thisFileUpload1PostedFileFileName);

if (strFileFullNameLength > 0)

{

if (FileUpload1HasFile)

{

string newFileName = GetNewFileName(strFileFullName);

string path = ServerMapPath("[服务器端存储的路径]" + newFileName);

string pathSaveImg = ServerMapPath("[服务器端存储的路径]" + newFileName);

thisFileUpload1SaveAs(path);

[数据库字段]= "[服务器端存储的路径]" + newFileName;

}

else

{

MessageBoxShow(this, "找不到此"); return;

}

}

//跟据文件名产生一个由时间+随机数组成的一个新的文件名

//因为客户端上传的文件很可能会重名,所以要对文件名进行重命名

public static string GetNewFileName(string FileName)

{

Random rand = new Random();

string newfilename = DateTimeNowYearToString() + DateTimeNowMonthToString() + "m" +

DateTimeNowDayToString() + "d"

+ DateTimeNowSecondToString() + DateTimeNowMinuteToString()

+ DateTimeNowMillisecondToString()

+ "a" + randNext(1000)ToString()

+ FileNameSubstring(FileNameLastIndexOf(""), FileNameLength - FileNameLastIndexOf(""));

return newfilename;

}

祝你成功!!!

在 C# 中,可以使用 ImageRawFormat 属性来获取 Bitmap 的格式。

ImageRawFormat 属性返回一个 ImageFormat 对象,表示图像的文件格式。

使用方法如下:

Bitmap bmp = new Bitmap("imagejpg");

ImageFormat format = bmpRawFormat;

if (format == ImageFormatJpeg)

ConsoleWriteLine("The image is in JPEG format");

else if (format == ImageFormatPng)

ConsoleWriteLine("The image is in PNG format");

else if (format == ImageFormatBmp)

ConsoleWriteLine("The image is in BMP format");

可以看到上面这个代码使用了三个 ImageFormat 枚举值分别来判断图像是否是 jpeg,png,bmp 格式。

可以使用 ImageFormatEquals() 判断是否是某种格式

if(ImageFormatJpegEquals(format))

ConsoleWriteLine("The image is in JPEG format");

这样就可以获取一个的类型,进而进行其他的 *** 作。

以上就是关于VC++关于如何用GDI+取得图片的Hbitmap全部的内容,包括:VC++关于如何用GDI+取得图片的Hbitmap、android图像绘制——画布保存为图片、C#程序保存图片到服务器地址怎么写 我是这样的bitmap.save("http:\\192.168.0.105\F:\宝康\my sql连接测等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9272472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存