Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何获得位图图像的分辨率?_C - Fatal编程技术网

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);
}