µ±Ç°Î»ÖãºÖ÷Ò³ > ²é¿´ÄÚÈÝ

´¿CÓïÑÔʵÏÖBMPͼÏñµÄ¶Á¡¢Ð´

·¢²¼Ê±¼ä£º2021-04-20 00:00| ÓРλÅóÓѲ鿴

¼ò½é£º´¿CÓïÑÔʵÏÖBMPͼÏñµÄ¶Á¡¢Ð´ ¶ÔÓÚ¸Õ½Ó´¥Êý×ÖͼÏñµÄͬѧӦ¸Ã¶¼ÓÐÒ»¸öÒÉÎÊÈçºÎ°ÑÒ»¸öBMP¸ñʽµÄͼÏñÓô¿CÓïÑÔ¶ÁÈëÄØÎÒÏàÐÅÕâÒ²ÊÇÊý×ÖͼÏñ´¦ÀíµÄµÚÒ»²½Èç¹ûÓÐÐÒ¿´µ½ÕâƪÎĵµÎÒ¾ÍÓÐÐҵijÉΪÄãÊý×ÖͼÏñ´¦Àí·ÉϵĵÚÒ»ÕµÃ÷µÆ Á˽âBMPµÄ¹¹³É Õâ¾ÍÊÇBMPͼÏñµÄÀíÂÛ֪ʶ¡­¡­

´¿CÓïÑÔʵÏÖBMPͼÏñµÄ¶Á¡¢Ð´

¶ÔÓÚ¸Õ½Ó´¥Êý×ÖͼÏñµÄͬѧ,Ó¦¸Ã¶¼ÓÐÒ»¸öÒÉÎÊ,ÈçºÎ°ÑÒ»¸öBMP¸ñʽµÄͼÏñÓô¿CÓïÑÔ¶ÁÈëÄØ,ÎÒÏàÐÅÕâÒ²ÊÇÊý×ÖͼÏñ´¦ÀíµÄµÚÒ»²½,Èç¹ûÓÐÐÒ¿´µ½ÕâƪÎĵµ,ÎÒ¾ÍÓÐÐҵijÉΪÄãÊý×ÖͼÏñ´¦Àí·ÉϵĵÚÒ»ÕµÃ÷µÆ!

Á˽âBMPµÄ¹¹³É

ÔÚÕâÀï²åÈëͼƬÃèÊö

    Õâ¾ÍÊÇBMPͼÏñµÄÀíÂÛ֪ʶ,Óиö´ó¸ÅµÄÁ˽â¾ÍÐÐ,×îÖ÷ÒªµÄÊÇ´ÓÀíÂÛµ½Êµ¼ù!!!

·Ï»°²»¶à˵,Ö±½ÓÉϸɻõ¡£

´úÂë

¶¨ÒåÍ·ÎļþΪ¡°bmp.h¡±,¶¨Òåread_bmpº¯ÊýΪ¶Áº¯Êý,write_bmpº¯ÊýΪдº¯Êý
¶Ábmpͼ

#include <stdlib.h>
#include <math.h>
#include <Windows.h>
#include "bmp.h"
/*´æ´¢Ô­Í¼µÄÏñËØ¿í¶È¸ß¶ÈºÍλͼÉî¶È*/
FILE* fpbmp;
FILE* fpout;
unsigned char* fpBmpHeader;   //λͼͷ
unsigned char* fpFileHeader;  //λͼÐÅÏ¢
RGBQUAD* pColorTable;         //BMP µ÷É«°å
int read_bmp(const char* path, unsigned char *pBmpBuf,int *Width,int *Height,int * bitCount)
{
	fpbmp = fopen(path, "rb");//pathΪͼÏñ·¾¶
	unsigned short s;
	fread(&s, 1, 2, fpbmp);
	//Åж϶ÁÈëµÄͼÏñÊÇ·ñΪBMPͼ  ×Ö·û´®"BM"=19778
	if (s == 19778)
	{
		printf("Open bmp success!!!\n");
	}
	else
	{
		printf("Open bmp fail!!!\n");
		return -1;
	}
	fseek(fpbmp, 0, SEEK_SET);
	BITMAPFILEHEADER fileHead;
	fread(&fileHead, sizeof(BITMAPFILEHEADER), 1, fpbmp);

	BITMAPINFOHEADER infoHead;
	fread(&infoHead, sizeof(BITMAPINFOHEADER), 1, fpbmp);

	*Width = infoHead.biWidth;//ͼÏñµÄ¿í
	*Height = infoHead.biHeight;//ͼÏñµÄ¸ß
	*bitCount = infoHead.biBitCount;
	int lineByte = (*Width * *bitCount / 8 + 3) / 4 * 4;
	fseek(fpbmp, sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD),SEEK_SET);
	fread(pBmpBuf, lineByte * *Height, 1, fpbmp);//pBmpBufΪͼÏñµÄRGBÊý¾Ý,Ò²ÊÇÎÒÃǽ«Òª´¦ÀíµÄÊý¾Ý
	return 0;
}

дBMPͼ

int write_bmp(unsigned char* img, int* Width, int* Height, int* bitCount)
{
	fpout = fopen("out.bmp", "wb+");
	if (fpbmp == NULL)
	{
		printf("read bmp failed!!!\n");
		return -1;
	}
	int lineByte = (*Width * *bitCount / 8 + 3) / 4 * 4;
	if (lineByte == 0)
	{
		printf("err");
		return -1;
	}
	fpFileHeader = new unsigned char[(sizeof(BITMAPFILEHEADER))];
	fseek(fpbmp, 0, SEEK_SET);  //¶¨Î»Ô­Í¼ Æ«ÒÆλÖÃ
	fseek(fpout, 0, SEEK_SET);  //¶¨Î»ÐÂͼ Æ«ÒÆλÖÃ
	fread(fpFileHeader, 1, sizeof(BITMAPFILEHEADER), fpbmp);
	fwrite(fpFileHeader, 1, sizeof(BITMAPFILEHEADER), fpout);


	/*¸´ÖÆԭͼÖРλͼ ÐÅÏ¢µ½ÐÂͼÏñ*/
	fpBmpHeader = new unsigned char[(sizeof(BITMAPINFOHEADER))];
	fseek(fpbmp, sizeof(BITMAPFILEHEADER), SEEK_SET);
	fseek(fpout, sizeof(BITMAPFILEHEADER), SEEK_SET);
	fread(fpBmpHeader, 1, sizeof(BITMAPINFOHEADER), fpbmp);
	fwrite(fpBmpHeader, 1, sizeof(BITMAPINFOHEADER), fpout);

	/*Copy µ÷É«°å info*/
	pColorTable = new RGBQUAD[256];
	fseek(fpbmp, sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER), SEEK_SET);
	fseek(fpout, sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER), SEEK_SET);
	fread(pColorTable, sizeof(RGBQUAD), 256, fpbmp);
	fwrite(pColorTable, sizeof(RGBQUAD), 256, fpout);

	fseek(fpout, sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD), SEEK_SET);
	fwrite(img, lineByte * *Height, sizeof(char), fpout);
	fclose(fpout);
	fclose(fpbmp);
	return 0;
}

mainº¯Êýµ÷ÓÃ

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <Windows.h>
#include "bmp.h"

int main()
{
	int width, height, bitCount = 0;
	unsigned char* pBmpBuf = (unsigned char*)malloc(1000 * 1000 * 3);//ÉêÇë¿Õ¼ä
	const char* path = "D:\\test\\read_bmp_image\\1-B.bmp";//ͼµÄ·¾¶
	read_bmp(path, pBmpBuf, &width, &height, &bitCount);
	write_bmp(pBmpBuf, &width, &height, &bitCount);
}

×ܽá,½«read_bmpº¯Êý·µ»ØµÄpBmpBuf²ÎÊý,¸³Öµ¸øwrite_bmpº¯ÊýµÄimg²ÎÊý,¾ÍʵÏÖÁËBMPͼ´Ó¶Áµ½Ð´µÄÈ«²¿¹ý³Ì,ÓÐÐËȤµÄͬѧ¶¯ÊÖʵ¼ùÏÂ,»áÓÐÒâÏò²»µ½µÄÊÕ»ñ¡£
×¢:ÔÚÏßת»»BMPͼµÄÍøÖ·,¿ÉÒÔ½«ÈκθñʽµÄÕÕƬת»»ÎªBMP¸ñʽ¡£ÇײâºÃÓá£Á´½Ó·îÉÏBMPͼÏñת»»ÍøÖ·

£»Ô­ÎÄÁ´½Ó£ºhttps://blog.csdn.net/weixin_47364956/article/details/115420772
±¾Õ¾²¿·ÖÄÚÈÝתÔØÓÚÍøÂ磬°æȨ¹éÔ­×÷ÕßËùÓУ¬×ªÔØ֮ĿµÄÔÚÓÚ´«²¥¸ü¶àÓÅÐã¼¼ÊõÄÚÈÝ£¬ÈçÓÐÇÖȨÇëÁªÏµQQ/΢ÐÅ£º153890879ɾ³ý£¬Ð»Ð»£¡

ÍƼöͼÎÄ

  • ÖÜÅÅÐÐ
  • ÔÂÅÅÐÐ
  • ×ÜÅÅÐÐ

Ëæ»úÍƼö