HGImgFmt库加载pdf时,默认使用200DPI

This commit is contained in:
luoliangyi 2023-07-31 13:47:56 +08:00
parent 975338cb57
commit fd58145fff
8 changed files with 40 additions and 87 deletions

View File

@ -78,25 +78,12 @@ void Dialog_FullScreen::showImage()
assert(!m_currFilePath.isEmpty());
HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
float scale = 200.0f / 72.0f;
HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img);
HGBase_SetImageDpi(img, 200, 200);
HGImgFmt_ClosePdfReader(pdfReader);
}
else
{
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (nullptr != img)

View File

@ -1746,26 +1746,12 @@ HGImage MainWindow::createImage()
assert(!m_currFilePath.isEmpty());
HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
float scale = 200.0f / 72.0f;
HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img);
//HGBase_SetImageDpi(img, 200, 200);
HGImgFmt_ClosePdfReader(pdfReader);
}
else
{
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
return img;
@ -2698,7 +2684,10 @@ void MainWindow::on_act_imageInfo_triggered()
imageValues.append(QString::number(depth));//add image depth
imageValues.append(depth == 0 ? tr("None") : (depth == 1 ? tr("Mono") : (depth == 8 ? tr("Gray") : tr("Color"))));//add image color
if (0 == xDpi || 0 == yDpi)
HGUInt imgFmtType = 0;
HGImgFmt_GetImgFmtType(m_currFilePath.toLocal8Bit().toStdString().c_str(), &imgFmtType);
if (HGIMGFMT_TYPE_PDF == imgFmtType || HGIMGFMT_TYPE_GIF == imgFmtType
|| HGIMGFMT_TYPE_PNM == imgFmtType)
{
QString info = tr("Not supported");
imageValues.append(info);

View File

@ -78,25 +78,12 @@ void Dialog_FullScreen::showImage()
assert(!m_currFilePath.isEmpty());
HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
float scale = 200.0f / 72.0f;
HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img);
HGBase_SetImageDpi(img, 200, 200);
HGImgFmt_ClosePdfReader(pdfReader);
}
else
{
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
if (nullptr != img)

View File

@ -1456,26 +1456,12 @@ HGImage MainWindow::createImage()
assert(!m_currFilePath.isEmpty());
HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
float scale = 200.0f / 72.0f;
HGImgFmt_LoadImageFromPdfReader(pdfReader, (HGUInt)m_multiIndex, scale, scale, 0, HGBASE_IMGORIGIN_TOP, &img);
//HGBase_SetImageDpi(img, 200, 200);
HGImgFmt_ClosePdfReader(pdfReader);
}
else
{
HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader)
{
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader);
}
return img;
@ -2387,7 +2373,10 @@ void MainWindow::on_act_imageInfo_triggered()
imageValues.append(QString::number(depth));//add image depth
imageValues.append(depth == 0 ? tr("None") : (depth == 1 ? tr("Mono") : (depth == 8 ? tr("Gray") : tr("Color"))));//add image color
if (0 == xDpi || 0 == yDpi)
HGUInt imgFmtType = 0;
HGImgFmt_GetImgFmtType(m_currFilePath.toLocal8Bit().toStdString().c_str(), &imgFmtType);
if (HGIMGFMT_TYPE_PDF == imgFmtType || HGIMGFMT_TYPE_GIF == imgFmtType
|| HGIMGFMT_TYPE_PNM == imgFmtType)
{
QString info = tr("Not supported");
imageValues.append(info);

View File

@ -27,8 +27,8 @@ struct HGImageImpl
m_top = 0;
m_right = 0;
m_bottom = 0;
m_xDpi = 0;
m_yDpi = 0;
m_xDpi = 96;
m_yDpi = 96;
}
~HGImageImpl()
@ -175,7 +175,7 @@ HGResult HGAPI HGBase_CreateImage(HGUInt width, HGUInt height, HGUInt type, HGUI
}
else
{
hBmp = CreateHBITMAP(width, height, type, origin, 0, 0, &data);
hBmp = CreateHBITMAP(width, height, type, origin, 96, 96, &data);
if (NULL == hBmp)
return HGBASE_ERR_OUTOFMEMORY;
else
@ -207,8 +207,8 @@ HGResult HGAPI HGBase_CreateImage(HGUInt width, HGUInt height, HGUInt type, HGUI
imageImpl->m_top = 0;
imageImpl->m_right = imageImpl->m_width;
imageImpl->m_bottom = imageImpl->m_height;
imageImpl->m_xDpi = 0;
imageImpl->m_yDpi = 0;
imageImpl->m_xDpi = 96;
imageImpl->m_yDpi = 96;
*image = (HGImage)imageImpl;
return HGBASE_ERR_OK;
@ -266,8 +266,8 @@ HGResult HGAPI HGBase_CreateImageWithData(HGByte* data, const HGImageInfo* info,
imageImpl->m_top = 0;
imageImpl->m_right = imageImpl->m_width;
imageImpl->m_bottom = imageImpl->m_height;
imageImpl->m_xDpi = 0;
imageImpl->m_yDpi = 0;
imageImpl->m_xDpi = 96;
imageImpl->m_yDpi = 96;
*image = (HGImage)imageImpl;
return HGBASE_ERR_OK;

View File

@ -1109,7 +1109,7 @@ HGResult HGAPI HGImgFmt_LoadImageFromReader(HGImgFmtReader reader, HGUInt index,
if (ret == HGBASE_ERR_OK && NULL != image)
{
ret = HGImgFmt_LoadImageFromPdfReader((HGPdfReader)imgFmtReaderImpl->handle, index, 1.0f, 1.0f, imgType, imgOrigin, image);
ret = HGImgFmt_LoadImageFromPdfReader((HGPdfReader)imgFmtReaderImpl->handle, index, 200.0f / 72.0f, 200.0f / 72.0f, imgType, imgOrigin, image);
}
return ret;

View File

@ -104,7 +104,7 @@ HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGPdfPageInfo* info
ret = HGImgFmt_GetPdfPageInfo(reader, 0, info);
if (HGBASE_ERR_OK == ret && NULL != image)
ret = HGImgFmt_LoadImageFromPdfReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image);
ret = HGImgFmt_LoadImageFromPdfReader(reader, 0, 200.0f / 72.0f, 200.0f / 72.0f, imgType, imgOrigin, image);
HGImgFmt_ClosePdfReader(reader);
return ret;

View File

@ -229,6 +229,7 @@ HGResult HGPdfReaderImpl::LoadImage(HGUInt page, HGFloat xScale, HGFloat yScale,
HGImageInfo imgInfo = { (uint32_t)width, (uint32_t)height, HGBASE_IMGTYPE_RGB, (uint32_t)pix->stride, HGBASE_IMGORIGIN_TOP };
if (HGBASE_ERR_OK == HGBase_CreateImageWithData(pix->samples, &imgInfo, &image2))
{
HGBase_SetImageDpi(image2, (HGUInt)(xScale * 72 + 0.5f), (HGUInt)(yScale * 72 + 0.5f));
ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
HGBase_DestroyImage(image2);
}