diff --git a/app/scanner/dialog_fullscreen.cpp b/app/scanner/dialog_fullscreen.cpp index e6888232..3086383f 100644 --- a/app/scanner/dialog_fullscreen.cpp +++ b/app/scanner/dialog_fullscreen.cpp @@ -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) diff --git a/app/scanner/mainwindow.cpp b/app/scanner/mainwindow.cpp index 9026b868..aa60f381 100644 --- a/app/scanner/mainwindow.cpp +++ b/app/scanner/mainwindow.cpp @@ -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); diff --git a/app/scanner2/dialog_fullscreen.cpp b/app/scanner2/dialog_fullscreen.cpp index e6888232..3086383f 100644 --- a/app/scanner2/dialog_fullscreen.cpp +++ b/app/scanner2/dialog_fullscreen.cpp @@ -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) diff --git a/app/scanner2/mainwindow.cpp b/app/scanner2/mainwindow.cpp index 2f17235f..7437f102 100644 --- a/app/scanner2/mainwindow.cpp +++ b/app/scanner2/mainwindow.cpp @@ -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); diff --git a/modules/base/HGImage.cpp b/modules/base/HGImage.cpp index 02718195..511a7609 100644 --- a/modules/base/HGImage.cpp +++ b/modules/base/HGImage.cpp @@ -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; diff --git a/modules/imgfmt/HGImgFmt.cpp b/modules/imgfmt/HGImgFmt.cpp index 93b43b39..2e00fd92 100644 --- a/modules/imgfmt/HGImgFmt.cpp +++ b/modules/imgfmt/HGImgFmt.cpp @@ -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; @@ -1483,4 +1483,4 @@ HGResult HGAPI HGImgFmt_SaveImageToWriter(HGImgFmtWriter writer, HGImage image, assert(HGIMGFMT_TYPE_GIF == imgFmtWriterImpl->fmtType); return HGImgFmt_SaveImageToGifWriter((HGGifWriter)imgFmtWriterImpl->handle, 50, HG_MAKECOLOR(255, 255, 255, 255), image); -} \ No newline at end of file +} diff --git a/modules/imgfmt/HGPdf.cpp b/modules/imgfmt/HGPdf.cpp index c3836054..bd7b7c71 100644 --- a/modules/imgfmt/HGPdf.cpp +++ b/modules/imgfmt/HGPdf.cpp @@ -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; diff --git a/modules/imgfmt/HGPdfImpl.cpp b/modules/imgfmt/HGPdfImpl.cpp index b91f8d94..0f465678 100644 --- a/modules/imgfmt/HGPdfImpl.cpp +++ b/modules/imgfmt/HGPdfImpl.cpp @@ -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); } @@ -887,4 +888,4 @@ int HGPdfImageWriterImpl::pdf_catch(PDF* p) } return func(p); -} \ No newline at end of file +}