解决导出对话框上面的进度条显示不正确的问题
This commit is contained in:
parent
80610b459f
commit
001eaf65cf
|
@ -31,8 +31,22 @@ Dialog_ExportImageFile::Dialog_ExportImageFile(const QString &destPath, const QS
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
||||||
|
|
||||||
|
int totalCount = 0;
|
||||||
|
for (int i = 0; i < m_srcFiles.size(); ++i)
|
||||||
|
{
|
||||||
|
HGImgFmtReader imgFmtReader = nullptr;
|
||||||
|
HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
||||||
|
if (NULL != imgFmtReader)
|
||||||
|
{
|
||||||
|
HGUInt count = 0;
|
||||||
|
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
||||||
|
totalCount += count;
|
||||||
|
HGImgFmt_CloseImageReader(imgFmtReader);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ui->progressBar->setMinimum(0);
|
ui->progressBar->setMinimum(0);
|
||||||
ui->progressBar->setMaximum(srcFiles.size());
|
ui->progressBar->setMaximum(totalCount);
|
||||||
ui->progressBar->setValue(0);
|
ui->progressBar->setValue(0);
|
||||||
|
|
||||||
connect(this, SIGNAL(updateProgress(int)), this, SLOT(on_updateProgress(int)), Qt::QueuedConnection);
|
connect(this, SIGNAL(updateProgress(int)), this, SLOT(on_updateProgress(int)), Qt::QueuedConnection);
|
||||||
|
@ -57,290 +71,29 @@ void HGAPI Dialog_ExportImageFile::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
{
|
{
|
||||||
(void)thread;
|
(void)thread;
|
||||||
Dialog_ExportImageFile *p = (Dialog_ExportImageFile *)param;
|
Dialog_ExportImageFile *p = (Dialog_ExportImageFile *)param;
|
||||||
HGResult ret = HGBASE_ERR_FAIL;
|
|
||||||
|
|
||||||
|
HGResult ret = HGBASE_ERR_FAIL;
|
||||||
if (p->m_isSaveAsMulti)
|
if (p->m_isSaveAsMulti)
|
||||||
{
|
{
|
||||||
QString fileName = p->m_destPath + p->m_destName + p->m_destExt;
|
|
||||||
|
|
||||||
if (p->m_isOcr)
|
if (p->m_isOcr)
|
||||||
{
|
{
|
||||||
#if 0
|
ret = p->processMultiFileOcr();
|
||||||
|
|
||||||
HGChar tmpFileName[256];
|
|
||||||
HGBase_GetTmpFileName("tif", tmpFileName, 256);
|
|
||||||
|
|
||||||
HGImgFmtWriter writer = NULL;
|
|
||||||
HGImgFmt_OpenImageWriter(tmpFileName, 0, &writer);
|
|
||||||
|
|
||||||
for (int i = 0; i < p->m_srcFiles.size(); ++i)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit p->updateProgress(i);
|
|
||||||
|
|
||||||
HGImgFmtReader imgFmtReader = nullptr;
|
|
||||||
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
HGUInt count = 0;
|
|
||||||
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
|
||||||
for (HGUInt j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImage img = nullptr;
|
|
||||||
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
ret = HGImgFmt_SaveImageToWriter(writer, img, NULL);
|
|
||||||
HGBase_DestroyImage(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageReader(imgFmtReader);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageWriter(writer);
|
|
||||||
|
|
||||||
bool result = createOcrPdf(tmpFileName, getStdString(fileName).c_str(), m_ocrLanguageType);
|
|
||||||
QFile::remove(tmpFileName);
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
ret = HGIMGPROC_ERR_OCR;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
HGOCRMgr ocrMgr = nullptr;
|
|
||||||
ret = HGImgProc_CreateOCRMgr(0, &ocrMgr);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < p->m_srcFiles.size(); ++i)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit p->updateProgress(i);
|
|
||||||
|
|
||||||
HGImgFmtReader imgFmtReader = nullptr;
|
|
||||||
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
HGUInt count = 0;
|
|
||||||
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
|
||||||
for (HGUInt j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImage img = nullptr;
|
|
||||||
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
ret = HGImgProc_AddToImageOCRList(ocrMgr, img);
|
|
||||||
HGBase_DestroyImage(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageReader(imgFmtReader);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == HGBASE_ERR_OK)
|
|
||||||
{
|
|
||||||
ret = HGImgProc_ImageListOCRToFile(ocrMgr, 0, getStdString(fileName).c_str(), NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgProc_DestroyOCRMgr(ocrMgr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (p->m_destExt == ".gif")
|
if (p->m_destExt == ".gif")
|
||||||
{
|
{
|
||||||
ret = p->processGif(fileName);
|
ret = p->processMultiFileGif();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HGImgFmtWriter imgFmtWriter = nullptr;
|
ret = p->processMultiFile();
|
||||||
ret = HGImgFmt_OpenImageWriter(getStdString(fileName).c_str(), 0, &imgFmtWriter);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < p->m_srcFiles.size(); ++i)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit p->updateProgress(i);
|
|
||||||
|
|
||||||
HGImgFmtReader imgFmtReader = nullptr;
|
|
||||||
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
HGUInt count = 0;
|
|
||||||
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
|
||||||
for (HGUInt j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImage img = nullptr;
|
|
||||||
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
HGImgFmtSaveInfo saveInfo;
|
|
||||||
saveInfo.jpegQuality = (HGUInt)p->m_jpegQuality;
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
|
||||||
saveInfo.tiffJpegQuality = (HGUInt)p->m_tiffQuality;
|
|
||||||
|
|
||||||
HGImageInfo imgInfo;
|
|
||||||
HGBase_GetImageInfo(img, &imgInfo);
|
|
||||||
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
|
||||||
{
|
|
||||||
if (1 == p->m_tiffCompressionBW)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
|
||||||
else if (2 == p->m_tiffCompressionBW)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (1 == p->m_tiffCompression)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
|
||||||
else if (2 == p->m_tiffCompression)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = HGImgFmt_SaveImageToWriter(imgFmtWriter, img, &saveInfo);
|
|
||||||
|
|
||||||
HGBase_DestroyImage(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageReader(imgFmtReader);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageWriter(imgFmtWriter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int index = 1;
|
ret = p->processSingleFile();
|
||||||
|
|
||||||
for (int i = 0; i < p->m_srcFiles.size(); ++i)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
emit p->updateProgress(i);
|
|
||||||
|
|
||||||
HGImgFmtReader imgFmtReader = nullptr;
|
|
||||||
ret = HGImgFmt_OpenImageReader(getStdString(p->m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
HGUInt count = 0;
|
|
||||||
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
|
||||||
for (HGUInt j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
if (p->m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImage img = nullptr;
|
|
||||||
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
char fileName[512];
|
|
||||||
if(p->m_srcFiles.size() > 1 || count > 1)
|
|
||||||
{
|
|
||||||
sprintf(fileName, "%s%03d", getStdString(p->m_destName).c_str(), index);
|
|
||||||
}else
|
|
||||||
sprintf(fileName, "%s", getStdString(p->m_destName).c_str());
|
|
||||||
|
|
||||||
++index;
|
|
||||||
|
|
||||||
QString saveFileName = p->m_destPath + QString(StdStringToUtf8(fileName).c_str()) + p->m_destExt;
|
|
||||||
|
|
||||||
HGImgFmtSaveInfo saveInfo;
|
|
||||||
saveInfo.jpegQuality = (HGUInt)p->m_jpegQuality;
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
|
||||||
saveInfo.tiffJpegQuality = (HGUInt)p->m_tiffQuality;
|
|
||||||
|
|
||||||
HGImageInfo imgInfo;
|
|
||||||
HGBase_GetImageInfo(img, &imgInfo);
|
|
||||||
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
|
||||||
{
|
|
||||||
if (1 == p->m_tiffCompressionBW)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
|
||||||
else if (2 == p->m_tiffCompressionBW)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (1 == p->m_tiffCompression)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
|
||||||
else if (2 == p->m_tiffCompression)
|
|
||||||
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = MainWindow::saveImage(img, &saveInfo, p->m_isOcr, getStdString(saveFileName).c_str());
|
|
||||||
HGBase_DestroyImage(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageReader(imgFmtReader);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit p->finish((int)ret);
|
emit p->finish((int)ret);
|
||||||
|
@ -366,7 +119,77 @@ void Dialog_ExportImageFile::on_pushButton_clicked()
|
||||||
m_thread = nullptr;
|
m_thread = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HGResult Dialog_ExportImageFile::processGif(const QString &fileName)
|
HGResult Dialog_ExportImageFile::processMultiFileOcr()
|
||||||
|
{
|
||||||
|
int handleCount = 0;
|
||||||
|
QString fileName = m_destPath + m_destName + m_destExt;
|
||||||
|
|
||||||
|
HGOCRMgr ocrMgr = nullptr;
|
||||||
|
HGResult ret = HGImgProc_CreateOCRMgr(HGIMGPROC_OCRALGO_HANVON, &ocrMgr);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < m_srcFiles.size(); ++i)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmtReader imgFmtReader = nullptr;
|
||||||
|
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt count = 0;
|
||||||
|
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
||||||
|
for (HGUInt j = 0; j < count; ++j)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit updateProgress(handleCount);
|
||||||
|
|
||||||
|
HGImage img = nullptr;
|
||||||
|
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HGImgProc_AddToImageOCRList(ocrMgr, img);
|
||||||
|
HGBase_DestroyImage(img);
|
||||||
|
++handleCount;
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmt_CloseImageReader(imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK == ret)
|
||||||
|
{
|
||||||
|
ret = HGImgProc_ImageListOCRToFile(ocrMgr, 0, getStdString(fileName).c_str(), NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgProc_DestroyOCRMgr(ocrMgr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult Dialog_ExportImageFile::processMultiFileGif()
|
||||||
{
|
{
|
||||||
HGUInt maxWidth = 0;
|
HGUInt maxWidth = 0;
|
||||||
HGUInt maxHeight = 0;
|
HGUInt maxHeight = 0;
|
||||||
|
@ -392,12 +215,16 @@ HGResult Dialog_ExportImageFile::processGif(const QString &fileName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HGGifSaveInfo gifSaveInfo = {maxWidth, maxHeight};
|
int handleCount = 0;
|
||||||
|
QString fileName = m_destPath + m_destName + m_destExt;
|
||||||
|
|
||||||
|
HGGifSaveInfo gifSaveInfo = {maxWidth, maxHeight};
|
||||||
HGGifWriter gifWriter = NULL;
|
HGGifWriter gifWriter = NULL;
|
||||||
HGResult ret = HGImgFmt_OpenGifWriter(getStdString(fileName).c_str(), &gifSaveInfo, &gifWriter);
|
HGResult ret = HGImgFmt_OpenGifWriter(getStdString(fileName).c_str(), &gifSaveInfo, &gifWriter);
|
||||||
if (ret != HGBASE_ERR_OK)
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < m_srcFiles.size(); ++i)
|
for (int i = 0; i < m_srcFiles.size(); ++i)
|
||||||
{
|
{
|
||||||
|
@ -406,47 +233,230 @@ HGResult Dialog_ExportImageFile::processGif(const QString &fileName)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit updateProgress(i);
|
|
||||||
|
|
||||||
HGImgFmtReader imgFmtReader = nullptr;
|
HGImgFmtReader imgFmtReader = nullptr;
|
||||||
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
||||||
if (HGBASE_ERR_OK == ret)
|
if (HGBASE_ERR_OK != ret)
|
||||||
{
|
{
|
||||||
HGUInt count = 0;
|
break;
|
||||||
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
|
||||||
for (HGUInt j = 0; j < count; ++j)
|
|
||||||
{
|
|
||||||
if (m_stopThread)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImage img = nullptr;
|
|
||||||
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
|
||||||
if (HGBASE_ERR_OK == ret)
|
|
||||||
{
|
|
||||||
ret = HGImgFmt_SaveImageToGifWriter(gifWriter, 200, HG_MAKECOLOR(255, 255, 255, 255), img);
|
|
||||||
|
|
||||||
HGBase_DestroyImage(img);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HGImgFmt_CloseImageReader(imgFmtReader);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret != HGBASE_ERR_OK)
|
HGUInt count = 0;
|
||||||
|
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
||||||
|
for (HGUInt j = 0; j < count; ++j)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit updateProgress(handleCount);
|
||||||
|
|
||||||
|
HGImage img = nullptr;
|
||||||
|
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HGImgFmt_SaveImageToGifWriter(gifWriter, 200, HG_MAKECOLOR(255, 255, 255, 255), img);
|
||||||
|
HGBase_DestroyImage(img);
|
||||||
|
++handleCount;
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmt_CloseImageReader(imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HGImgFmt_CloseGifWriter(gifWriter);
|
HGImgFmt_CloseGifWriter(gifWriter);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGResult Dialog_ExportImageFile::processMultiFile()
|
||||||
|
{
|
||||||
|
int handleCount = 0;
|
||||||
|
QString fileName = m_destPath + m_destName + m_destExt;
|
||||||
|
|
||||||
|
HGImgFmtWriter imgFmtWriter = nullptr;
|
||||||
|
HGResult ret = HGImgFmt_OpenImageWriter(getStdString(fileName).c_str(), 0, &imgFmtWriter);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < m_srcFiles.size(); ++i)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmtReader imgFmtReader = nullptr;
|
||||||
|
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt count = 0;
|
||||||
|
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
||||||
|
for (HGUInt j = 0; j < count; ++j)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit updateProgress(handleCount);
|
||||||
|
|
||||||
|
HGImage img = nullptr;
|
||||||
|
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmtSaveInfo saveInfo;
|
||||||
|
saveInfo.jpegQuality = (HGUInt)m_jpegQuality;
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
||||||
|
saveInfo.tiffJpegQuality = (HGUInt)m_tiffQuality;
|
||||||
|
|
||||||
|
HGImageInfo imgInfo;
|
||||||
|
HGBase_GetImageInfo(img, &imgInfo);
|
||||||
|
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
||||||
|
{
|
||||||
|
if (1 == m_tiffCompressionBW)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||||
|
else if (2 == m_tiffCompressionBW)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (1 == m_tiffCompression)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||||
|
else if (2 == m_tiffCompression)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = HGImgFmt_SaveImageToWriter(imgFmtWriter, img, &saveInfo);
|
||||||
|
HGBase_DestroyImage(img);
|
||||||
|
++handleCount;
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmt_CloseImageReader(imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmt_CloseImageWriter(imgFmtWriter);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult Dialog_ExportImageFile::processSingleFile()
|
||||||
|
{
|
||||||
|
int handleCount = 0;
|
||||||
|
HGResult ret = HGBASE_ERR_OK;
|
||||||
|
|
||||||
|
for (int i = 0; i < m_srcFiles.size(); ++i)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmtReader imgFmtReader = nullptr;
|
||||||
|
ret = HGImgFmt_OpenImageReader(getStdString(m_srcFiles[i]).c_str(), 0, &imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt count = 0;
|
||||||
|
HGImgFmt_GetImagePageCount(imgFmtReader, &count);
|
||||||
|
for (HGUInt j = 0; j < count; ++j)
|
||||||
|
{
|
||||||
|
if (m_stopThread)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit updateProgress(handleCount);
|
||||||
|
|
||||||
|
HGImage img = nullptr;
|
||||||
|
ret = HGImgFmt_LoadImageFromReader(imgFmtReader, j, nullptr, 0, HGBASE_IMGORIGIN_TOP, &img);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString fileName;
|
||||||
|
if(m_srcFiles.size() > 1 || count > 1)
|
||||||
|
{
|
||||||
|
char str[256];
|
||||||
|
sprintf(str, "%s%03d", getStdString(m_destName).c_str(), handleCount + 1);
|
||||||
|
fileName = m_destPath + QString(StdStringToUtf8(str).c_str()) + m_destExt;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileName = m_destPath + m_destName + m_destExt;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmtSaveInfo saveInfo;
|
||||||
|
saveInfo.jpegQuality = (HGUInt)m_jpegQuality;
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_NONE;
|
||||||
|
saveInfo.tiffJpegQuality = (HGUInt)m_tiffQuality;
|
||||||
|
|
||||||
|
HGImageInfo imgInfo;
|
||||||
|
HGBase_GetImageInfo(img, &imgInfo);
|
||||||
|
if (HGBASE_IMGTYPE_BINARY == imgInfo.type)
|
||||||
|
{
|
||||||
|
if (1 == m_tiffCompressionBW)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||||
|
else if (2 == m_tiffCompressionBW)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_CCITTFAX4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (1 == m_tiffCompression)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_LZW;
|
||||||
|
else if (2 == m_tiffCompression)
|
||||||
|
saveInfo.tiffCompression = HGIMGFMT_TIFFCOMP_JPEG;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = MainWindow::saveImage(img, &saveInfo, m_isOcr, getStdString(fileName).c_str());
|
||||||
|
HGBase_DestroyImage(img);
|
||||||
|
++handleCount;
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HGImgFmt_CloseImageReader(imgFmtReader);
|
||||||
|
if (HGBASE_ERR_OK != ret)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void Dialog_ExportImageFile::closeEvent(QCloseEvent *e)
|
void Dialog_ExportImageFile::closeEvent(QCloseEvent *e)
|
||||||
{
|
{
|
||||||
(void)e;
|
(void)e;
|
||||||
|
|
|
@ -31,7 +31,10 @@ private slots:
|
||||||
void on_pushButton_clicked();
|
void on_pushButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HGResult processGif(const QString &fileName);
|
HGResult processMultiFileOcr();
|
||||||
|
HGResult processMultiFileGif();
|
||||||
|
HGResult processMultiFile();
|
||||||
|
HGResult processSingleFile();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void closeEvent(QCloseEvent *e);
|
virtual void closeEvent(QCloseEvent *e);
|
||||||
|
@ -50,7 +53,7 @@ private:
|
||||||
bool m_isOcr;
|
bool m_isOcr;
|
||||||
QStringList m_srcFiles;
|
QStringList m_srcFiles;
|
||||||
|
|
||||||
bool m_stopThread;
|
volatile bool m_stopThread;
|
||||||
HGThread m_thread;
|
HGThread m_thread;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -178,20 +178,23 @@
|
||||||
}
|
}
|
||||||
else if ("scan_image" == message['func'])
|
else if ("scan_image" == message['func'])
|
||||||
{
|
{
|
||||||
|
var info = document.getElementById('info');
|
||||||
|
info.value = message['image_path'];
|
||||||
|
|
||||||
//var myCanvas = document.getElementById("myCanvas");
|
//var myCanvas = document.getElementById("myCanvas");
|
||||||
//myCanvas.src = message['image_base64'];
|
//myCanvas.src = message['image_base64'];
|
||||||
|
|
||||||
var req1 = {'func':'insert_local_image', 'iden':'111', 'image_path':''};
|
//var req1 = {'func':'insert_local_image', 'iden':'111', 'image_path':''};
|
||||||
req1.image_path = message['image_path'];
|
//req1.image_path = message['image_path'];
|
||||||
socket.send(JSON.stringify(req1));
|
//socket.send(JSON.stringify(req1));
|
||||||
|
|
||||||
//var req2 = {'func':'upload_local_file', 'iden':'111', 'file_path':'', 'upload_mode':'http', 'http_host':'192.168.100.70', 'http_port':8001, 'http_path':'/upload.php'};
|
//var req2 = {'func':'upload_local_file', 'iden':'111', 'file_path':'', 'upload_mode':'http', 'http_host':'192.168.100.70', 'http_port':8001, 'http_path':'/upload.php'};
|
||||||
//req2.file_path = message['image_path'];
|
//req2.file_path = message['image_path'];
|
||||||
//socket.send(JSON.stringify(req2));
|
//socket.send(JSON.stringify(req2));
|
||||||
|
|
||||||
var req3 = {'func':'delete_local_file', 'file_path':''};
|
//var req3 = {'func':'delete_local_file', 'file_path':''};
|
||||||
req3.file_path = message['image_path'];
|
//req3.file_path = message['image_path'];
|
||||||
socket.send(JSON.stringify(req3));
|
//socket.send(JSON.stringify(req3));
|
||||||
}
|
}
|
||||||
else if ("stop_scan" == message['func'])
|
else if ("stop_scan" == message['func'])
|
||||||
{
|
{
|
||||||
|
@ -397,7 +400,7 @@
|
||||||
'remote_file_path':'/savedir/123.jpg',
|
'remote_file_path':'/savedir/123.jpg',
|
||||||
'upload_mode':'http',
|
'upload_mode':'http',
|
||||||
'http_host':'192.168.1.70',
|
'http_host':'192.168.1.70',
|
||||||
'http_port':8001,
|
'http_port':8080,
|
||||||
'http_path':'/upload.php'
|
'http_path':'/upload.php'
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue