Tag: 位图

C / C ++旋转BMP图像

我正在尝试使用C / C ++旋转BMP图像,但它不起作用。 我已经为读取,写入和旋转做了一些function,读取和写入工作完美正常,但不是因为某些原因而旋转。 编辑(sin,cos和旋转function) BMP结构: struct BMP { int width; int height; unsigned char header[54]; unsigned char *pixels; int size; }; 写: void writeBMP(string filename, BMP image) { string fileName = “Output Files/” + filename; FILE *out = fopen(fileName.c_str(), “wb”); fwrite(image.header, sizeof(unsigned char), 54, out); int i; unsigned char tmp; for (i = […]

从RGB BMP创建灰度BMP

我有24位图像,我读取位图并将其转换为灰度,并保存为8位。 RGBTRIPLE temp; unsigned char t; … t = (temp.rgbtBlue * 0.114 + temp.rgbtGreen * 0.587 + temp.rgbtRed * 0.299); fwrite(&t, sizeof(UCHAR), 1, newFile); 在那个图像没有打开之后,我明白我必须改变标题。 我尝试在标头中更改文件的大小和位图的大小,但它没有工作。 BITMAPFILEHEADER bfh; BITMAPINFOHEADER bih; … bfh.bfSize = sizeof(UCHAR) * img.Width * img.Height + bfh.bfOffBits; bih.biSizeImage = sizeof(UCHAR) * img.Width * img.Height; bih.biCompression = BI_BITFIELDS; bih.biBitCount = 8; 我需要更改保存图像,如8位BMP?

在C中创建位图

我正在尝试创建一个显示子弹飞行路径的位图。 int drawBitmap(int height, int width, Point* curve, char* bitmap_name) { int image_size = width * height * 3; int padding = width – (width % 4); struct _BitmapFileheader_ BMFH; struct _BitmapInfoHeader_ BMIH; BMFH.type_[1] = ‘B’; BMFH.type_[2] = ‘M’; BMFH.file_size_ = 54 + height * padding; BMFH.reserved_1_ = 0; BMFH.reserved_2_ = 0; BMFH.offset_ = 54; […]

在C中写入位图文件头的问题

我正在尝试使用C创建一个新的位图文件。这是.bmp文件头的结构。 #define uint16 unsigned short #define uint32 unsigned long #define uint8 unsigned char typedef struct { uint16 magic; //specifies the file type “BM” 0x424d uint32 bfSize; //specifies the size in bytes of the bitmap file uint16 bfReserved1; //reserved; must be 0 uint16 bfReserved2; //reserved; must be 0 uint32 bOffBits; } BITMAPFILEHEADER; 在我的计划中,我这样做。 main() { FILE* […]

在X中将XImage写入.bmp文件

我正在使用以下代码将XImage写入文件“bitmap0.bmp”但是当我在fedora中使用imageViewer打开新创建的文件时,它会出现“文件过早结束”错误并且不显示任何内容。 有谁可以请指出以下代码中的问题? typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; BITMAPINFOHEADER; void saveXImageToBitmap(XImage *pImage) { BITMAPFILEHEADER bmpFileHeader; BITMAPINFOHEADER bmpInfoHeader; FILE *fp; static […]

在WIN32中的“BUTTON”类窗口上显示位图

编辑:我认为在创建子窗口期间(即我的按钮)不会发送WM_CREATE消息。 因此,通过在WM_CREATE期间调用SendMessage,我正在向尚未创建的窗口发送消息。 现在的解决方案是在WM_SHOWWINDOW消息期间调用SendMessage()。 子窗口是否在创建时发送WM_CREATE消息? 为什么按钮上没有显示位图? 位图是180×180像素。 我有一个资源文件: Bit BITMAP bit.bmp 然后我创建主窗口和一个子“BUTTON”窗口,其中包含: HWND b, d; b = CreateWindow(L”a”, NULL, WS_OVERLAPPEDWINDOW, 0, 0, 500, 500, 0, 0, hInstance, 0); d = CreateWindow(L”BUTTON”, NULL, WS_CHILD | WS_VISIBLE | BS_BITMAP, 10, 10, 180, 180, b, 200, hInstance, 0); 然后,在我的Windows程序中,我向“BUTTON”窗口发送“BM_SETIMAGE”消息: HBITMAP hbit; case WM_CREATE: // It works if I change […]

OpenGL中的位图渲染方法?

我最近在纯C中一直在研究一点位图解析器,只是为了理解更简单的图像格式的低级工作。 到目前为止,使用维基百科关于位图文件的文章 ,我能够(至少我认为)正确地解析信息 – 至少,大部分都是如此。 问题是我不太确定该怎么做:因为我一直在使用3.1上下文,我可以访问更多现代化的function,这很好,尽管我还是迷路了。 我有一个使用GLFW的窗口设置,到目前为止还没有真正渲染任何东西,因为我一直专注于解析/低级细节。 由于我正在努力避免查看实际的代码示例, 如果有人能够向我解释渲染位图背后的过程是什么,只使用OpenGL / GLFW和ISO C标准库,那就太酷了。 虽然我有几个着色器,并且我能够毫无问题地加载它们,但我认为我需要做的是渲染一个符合尺寸(宽度,高度)的[不可见]四边形。图像本身,然后将像素数据传递给OpenGL。 然而,主要问题是着色器的设置如下: 顶点着色器 #version 150 #extension GL_ARB_separate_shader_objects : enable layout(location = 0) in vec2 Position; layout(location = 1) in vec2 UV_In; out vec2 UV; void main() { gl_Position = vec4( Position, 0.0f, 1.0f ); UV = UV_In; } 片段着色器 #version 150 #extension GL_ARB_separate_shader_objects […]

使用libpng帮助将位图转换为内存中的png

基本上我想使用libpng将位图转换为png,而不是将其输出到FILE *我想将它输出到char *。 我已经看过这个相关的post,但我没看到实际使用位图数据的位置。 任何帮助,将不胜感激。

在c中读/写bmp文件

我正在尝试使用bmp文件。 首先,我尝试从bmp文件中读取标头和数据,并将其写入新文件: #pragma pack(push,1) /* Windows 3.x bitmap file header */ typedef struct { char filetype[2]; /* magic – always ‘B’ ‘M’ */ unsigned int filesize; short reserved1; short reserved2; unsigned int dataoffset; /* offset in bytes to actual bitmap data */ } file_header; /* Windows 3.x bitmap full header, including file header */ typedef […]

SDL将图像嵌入程序可执行文件中

是否可以使用可在运行时使用的SDL在程序中嵌入图像。 例如,我有一个程序在启动时显示包含徽标和版权信息的启动画面。 而不是将此图像放在位图文件中,并使用SDL_LoadBMP将其加载到SDL_Surface。 我想将图像嵌入到程序二进制文件中,以阻止某人可能更改启动图像和版权名称。 有没有人对如何做到这一点有任何建议? 示例代码会很棒。