解决生成ofd文件时实际dpi不正确的问题

This commit is contained in:
luoliangyi 2022-08-09 15:15:33 +08:00
parent c8715dea0b
commit d17e7f92c7
1 changed files with 18 additions and 2 deletions

View File

@ -487,10 +487,26 @@ HGResult HGOfdImageWriterImpl::SaveJpegImage(HGImage image, const HGJpegSaveInfo
return HGBASE_ERR_FAIL;
}
HGUInt xDpi, yDpi;
HGBase_GetImageDpi(image, &xDpi, &yDpi);
if (NULL != info)
{
if (HGIMGFMT_JPEGDENUNIT_INCH == info->densityUnit)
{
xDpi = info->xDensity;
yDpi = info->yDensity;
}
else if (HGIMGFMT_JPEGDENUNIT_CENTIMETER == info->densityUnit)
{
xDpi = (uint32_t)((double)info->xDensity / 0.393700787 + 0.5);
yDpi = (uint32_t)((double)info->yDensity / 0.393700787 + 0.5);
}
}
HGImageInfo imgInfo;
HGBase_GetImageInfo(image, &imgInfo);
HGFloat physicalWidth = 25.4f * (HGFloat)imgInfo.width / 96.0f;
HGFloat physicalHeight = 25.4f * (HGFloat)imgInfo.height / 96.0f;
HGFloat physicalWidth = 25.4f * (HGFloat)imgInfo.width / (HGFloat)xDpi;
HGFloat physicalHeight = 25.4f * (HGFloat)imgInfo.height / (HGFloat)yDpi;
AddContentXmlFile(m_curImgIndex, physicalWidth, physicalHeight);
++m_curImgIndex;