C 如何获得位图图像的分辨率?
C 如何获得位图图像的分辨率?,c,C,#包括 #包括 #杂注警告(禁用:4996) void main() { 文件*填充; infle=fopen(“img.bmp”、“rb”); BITMAPFILEHEADER头文件; fread(&Header_文件,sizeof(BITMAPFILEHEADER),1,infle); 如果(Header_File.bfType!=0x4D42)退出(1); BitMapInfo头信息; fread(&Header_Info,sizeof(BitMapInfo头),1,infle); pri
#包括
#包括
#杂注警告(禁用:4996)
void main()
{
文件*填充;
infle=fopen(“img.bmp”、“rb”);
BITMAPFILEHEADER头文件;
fread(&Header_文件,sizeof(BITMAPFILEHEADER),1,infle);
如果(Header_File.bfType!=0x4D42)退出(1);
BitMapInfo头信息;
fread(&Header_Info,sizeof(BitMapInfo头),1,infle);
printf(“图像大小:(%dx%d)\n”、标题信息宽度、标题信息高度);
printf(“biXPelsPerMeter:%d\n”,标题信息biXPelsPerMeter);
printf(“biYPelsPerMeter:%d\n”,标题信息biYPelsPerMeter);
fclose(infle);
}
我编写的代码是为了获得图像的分辨率。但是,有些图像无法正常工作
我认为这是因为标题信息中没有垂直和水平DPI
因此,如果图像的标题信息中没有分辨率,则biXPelsPerMeter
和biYPelsPerMeter
的值为0
除了从标题信息中获取分辨率外,还有其他方法吗?标题会以像素为单位告诉您宽度和高度。这不是你想要的吗?如果位图没有分辨率,那么它就没有分辨率。你想凭空变戏法吗?谢谢你的回复。总之,我想知道如何获得图像的倾斜度。Photoshop工具说图像源的dpi值为72。我在其他社区也问了同样的问题,一位成员说,你可以不用头文件就获得DPI,但我没有具体解释,所以我在这里发布了一个问题。这不是真的相关,但Photoshop很可能告诉你图像有72 PPI,而不是DPI。它是每英寸像素数,而不是点,除非你直接参与打印。页眉以像素为单位告诉你宽度和高度。这不是你想要的吗?如果位图没有分辨率,那么它就没有分辨率。你想凭空变戏法吗?谢谢你的回复。总之,我想知道如何获得图像的倾斜度。Photoshop工具说图像源的dpi值为72。我在其他社区也问了同样的问题,一位成员说,你可以不用头文件就获得DPI,但我没有具体解释,所以我在这里发布了一个问题。这不是真的相关,但Photoshop很可能告诉你图像有72 PPI,而不是DPI。它是每英寸像素数,而不是点,除非您直接参与打印。
#include <stdio.h>
#include <windows.h>
#pragma warning(disable:4996)
void main()
{
FILE* infile;
infile = fopen("img.bmp", "rb");
BITMAPFILEHEADER Header_File;
fread(&Header_File, sizeof(BITMAPFILEHEADER), 1, infile);
if (Header_File.bfType != 0x4D42) exit(1);
BITMAPINFOHEADER Header_Info;
fread(&Header_Info, sizeof(BITMAPINFOHEADER), 1, infile);
printf("Image Size: (%d x %d)\n", Header_Info.biWidth, Header_Info.biHeight);
printf("biXPelsPerMeter: %d \n", Header_Info.biXPelsPerMeter);
printf("biYPelsPerMeter: %d \n", Header_Info.biYPelsPerMeter);
fclose(infile);
}