21xrx.com
2024-09-20 06:10:15 Friday
登录
文章检索 我的文章 写文章
如何在C++中输出图片?
2023-06-29 05:43:55 深夜i     --     --
C++ 输出 图片

在C++中,我们可以使用第三方库或系统API来输出图片。下面介绍两种常用的方法。

方法一:使用第三方库

1. 首先需要安装OpenCV库,可以在官网下载并按照说明进行安装。

2. 然后编写代码,加入以下头文件:


#include <opencv2/highgui.hpp>

#include <opencv2/imgcodecs.hpp>

3. 加载图片:


cv::Mat image = cv::imread("image.jpg");

4. 输出图片:


cv::imwrite("output.jpg", image);

5. 完整代码如下:


#include <opencv2/highgui.hpp>

#include <opencv2/imgcodecs.hpp>

int main()

{

  cv::Mat image = cv::imread("image.jpg");

  cv::imwrite("output.jpg", image);

  

  return 0;

}

方法二:使用系统API

1. 加入以下头文件:


#include <Windows.h>

2. 加载图片:


HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

3. 输出图片:


HDC hDC = GetDC(NULL);

HDC hMemDC = CreateCompatibleDC(hDC);

SelectObject(hMemDC, hBitmap);

BITMAP bmp;

GetObject(hBitmap, sizeof(bmp), &bmp);

RECT rc;

rc.left = 0;

rc.top = 0;

rc.right = bmp.bmWidth;

rc.bottom = bmp.bmHeight;

BITMAPINFO bmi = {};

bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);

bmi.bmiHeader.biWidth = bmp.bmWidth;

bmi.bmiHeader.biHeight = bmp.bmHeight;

bmi.bmiHeader.biPlanes = 1;

bmi.bmiHeader.biBitCount = 24;

bmi.bmiHeader.biCompression = BI_RGB;

SetStretchBltMode(hDC, COLORONCOLOR);

StretchDIBits(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, 0, 0, bmp.bmWidth, bmp.bmHeight, bmp.bmBits, &bmi, DIB_RGB_COLORS, SRCCOPY);

ReleaseDC(NULL, hDC);

DeleteDC(hMemDC);

DeleteObject(hBitmap);

4. 完整代码如下:


#include <Windows.h>

int main()

{

  HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);

  

  HDC hDC = GetDC(NULL);

  HDC hMemDC = CreateCompatibleDC(hDC);

  SelectObject(hMemDC, hBitmap);

  

  BITMAP bmp;

  GetObject(hBitmap, sizeof(bmp), &bmp);

  

  RECT rc;

  rc.left = 0;

  rc.top = 0;

  rc.right = bmp.bmWidth;

  rc.bottom = bmp.bmHeight;

  

  BITMAPINFO bmi = {};

  bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);

  bmi.bmiHeader.biWidth = bmp.bmWidth;

  bmi.bmiHeader.biHeight = bmp.bmHeight;

  bmi.bmiHeader.biPlanes = 1;

  bmi.bmiHeader.biBitCount = 24;

  bmi.bmiHeader.biCompression = BI_RGB;

  

  SetStretchBltMode(hDC, COLORONCOLOR);

  StretchDIBits(hDC, 0, 0, bmp.bmWidth, bmp.bmHeight, 0, 0, bmp.bmWidth, bmp.bmHeight, bmp.bmBits, &bmi, DIB_RGB_COLORS, SRCCOPY);

  

  ReleaseDC(NULL, hDC);

  DeleteDC(hMemDC);

  DeleteObject(hBitmap);

  

  return 0;

}

以上是在C++中输出图片的两种方法,开发者可以根据需要选择合适的方法进行使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复