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,18 +78,6 @@ void Dialog_FullScreen::showImage()
assert(!m_currFilePath.isEmpty()); assert(!m_currFilePath.isEmpty());
HGImage img = nullptr; HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
{
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; HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader) if (nullptr != imgFmtReader)
@ -97,7 +85,6 @@ void Dialog_FullScreen::showImage()
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader); HGImgFmt_CloseImageReader(imgFmtReader);
} }
}
if (nullptr != img) if (nullptr != img)
{ {

View File

@ -1746,19 +1746,6 @@ HGImage MainWindow::createImage()
assert(!m_currFilePath.isEmpty()); assert(!m_currFilePath.isEmpty());
HGImage img = nullptr; HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
{
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; HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader) if (nullptr != imgFmtReader)
@ -1766,7 +1753,6 @@ HGImage MainWindow::createImage()
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader); HGImgFmt_CloseImageReader(imgFmtReader);
} }
}
return img; return img;
} }
@ -2698,7 +2684,10 @@ void MainWindow::on_act_imageInfo_triggered()
imageValues.append(QString::number(depth));//add image depth 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 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"); QString info = tr("Not supported");
imageValues.append(info); imageValues.append(info);

View File

@ -78,18 +78,6 @@ void Dialog_FullScreen::showImage()
assert(!m_currFilePath.isEmpty()); assert(!m_currFilePath.isEmpty());
HGImage img = nullptr; HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
{
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; HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader) if (nullptr != imgFmtReader)
@ -97,7 +85,6 @@ void Dialog_FullScreen::showImage()
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader); HGImgFmt_CloseImageReader(imgFmtReader);
} }
}
if (nullptr != img) if (nullptr != img)
{ {

View File

@ -1456,19 +1456,6 @@ HGImage MainWindow::createImage()
assert(!m_currFilePath.isEmpty()); assert(!m_currFilePath.isEmpty());
HGImage img = nullptr; HGImage img = nullptr;
HGPdfReader pdfReader = nullptr;
HGImgFmt_OpenPdfReader(getStdString(m_currFilePath).c_str(), &pdfReader);
if (nullptr != pdfReader)
{
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; HGImgFmtReader imgFmtReader = nullptr;
HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader); HGImgFmt_OpenImageReader(getStdString(m_currFilePath).c_str(), 0, &imgFmtReader);
if (nullptr != imgFmtReader) if (nullptr != imgFmtReader)
@ -1476,7 +1463,6 @@ HGImage MainWindow::createImage()
HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img); HGImgFmt_LoadImageFromReader(imgFmtReader, (HGUInt)m_multiIndex, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
HGImgFmt_CloseImageReader(imgFmtReader); HGImgFmt_CloseImageReader(imgFmtReader);
} }
}
return img; return img;
} }
@ -2387,7 +2373,10 @@ void MainWindow::on_act_imageInfo_triggered()
imageValues.append(QString::number(depth));//add image depth 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 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"); QString info = tr("Not supported");
imageValues.append(info); imageValues.append(info);

View File

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

View File

@ -104,7 +104,7 @@ HGResult HGAPI HGImgFmt_LoadPdfImage(const HGChar* fileName, HGPdfPageInfo* info
ret = HGImgFmt_GetPdfPageInfo(reader, 0, info); ret = HGImgFmt_GetPdfPageInfo(reader, 0, info);
if (HGBASE_ERR_OK == ret && NULL != image) 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); HGImgFmt_ClosePdfReader(reader);
return ret; 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 }; 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)) 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); ret = HGBase_CloneImage(image2, imgType, imgOrigin, image);
HGBase_DestroyImage(image2); HGBase_DestroyImage(image2);
} }