关于jpg文件格式的一个情景-第三篇(exiv2:后实践)
从jpg文件中读取横向和纵向DPI,不过你的图片中可能是没有这个字段的
bool getDpiFromMemory(const uchar* data, size_t size, double& xDpi, double& yDpi) { try { // 从内存创建 Exiv2 图像对象 Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(data, size); if (!image.get()) { std::cerr << "Error: Cannot parse image metadata!" << std::endl; return false; } image->readMetadata(); Exiv2::ExifData& exifData = image->exifData(); // 查找 DPI 信息 auto xRes = exifData.findKey(Exiv2::ExifKey("Exif.Image.XResolution")); auto yRes = exifData.findKey(Exiv2::ExifKey("Exif.Image.YResolution")); if (xRes != exifData.end() && yRes != exifData.end()) { xDpi = xRes->toFloat(); yDpi = yRes->toFloat(); return true; } else { std::cout << "DPI not found in metadata." << std::endl; return false; } } catch (const Exiv2::Error& e) { std::cerr << "Exiv2 Error: " << e.what() << std::endl; return false; } }
结果:

 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号