修复因文件后缀导致cv::im_write异常的问题

This commit is contained in:
gb 2023-07-01 19:04:35 +08:00
parent b5fd5a1ef7
commit cdc979ea38
1 changed files with 16 additions and 14 deletions

View File

@ -225,7 +225,7 @@ namespace hg_imgproc
,Dynamicopen_HGBase_pHandle_(NULL)
,Dynamicopen_HGImageprc_pHandle_(NULL),isx86_Advan_(isx86_Advan)
{
cv::setUseOptimized(isx86_Advan_); //开关cpu高级指令集
cv::setUseOptimized(isx86_Advan_); //开关cpu高级指令é?
}
~imgproc()
{
@ -326,7 +326,7 @@ namespace hg_imgproc
{
return SCANNER_ERR_OUT_OF_RANGE;
}
printf("HGBaselib_path%s HGImagePrclib_path:%s\r\n",HGBaselib_path.c_str(),HGImagePrclib_path.c_str());
printf("HGBaselib_pathï¼?s HGImagePrclib_path:%s\r\n",HGBaselib_path.c_str(),HGImagePrclib_path.c_str());
Dynamicopen_HGImageprc_pHandle_ = dlopen(HGImagePrclib_path.c_str(), RTLD_LAZY);
Dynamicopen_HGBase_pHandle_ = dlopen(HGBaselib_path.c_str(), RTLD_LAZY);
@ -511,7 +511,7 @@ namespace hg_imgproc
catch (const std::exception& e)
{
LOG_INFO(LOG_LEVEL_FATAL, e.what());
throw(e); // 继续抛到上层处理。
throw(e); // 继续æŠåˆ°ä¸Šå±å¤„ç<EFBFBD>†ã€?
}
}
@ -523,7 +523,7 @@ namespace hg_imgproc
if (pid_ == 0x100 || pid_ == 0x200 || pid_ == 0x300 || pid_ == 0x400 || pid == 0x402 || pid == 0x302)
{
//////除穿孔算法移至解压图像之后
//////除穿孔算法移至解åŽå¾åƒ<EFBFBD>ä¹å<EFBFBD>?
double left = img_conf_.fillholeratio_left / 100.0;
double right = img_conf_.fillholeratio_right / 100.0;
double top = img_conf_.fillholeratio_up / 100.0;
@ -1336,7 +1336,7 @@ namespace hg_imgproc
info.width = mats.cols;
info.origin = HGBASE_IMGORIGIN_TOP;
int bits = mats.channels() == 1 ? 8 : 24;
info.widthStep = mats.step; //opencv原始值
info.widthStep = mats.step; //opencv原始�
info.type = mats.channels() == 1 ? HGBASE_IMGTYPE_GRAY : HGBASE_IMGTYPE_BGR;
int ret = HGBase_CreatImg(const_cast<uchar*>(mats.data), &info, &image);
@ -1348,11 +1348,11 @@ namespace hg_imgproc
/// <summary>
/// 8位图转1位图
/// 8ä½<EFBFBD>å¾è½?ä½<C3A4>å¾
/// </summary>
/// <param name="image">8bit图</param>
/// <param name="image">8bitå›?/param>
/// <param name="threshold">阈值建议默认127</param>
/// <param name="reverse">true为反色即黑0白1反之亦然</param>
/// <param name="reverse">true为å<EFBFBD><EFBFBD>色,å<EFBFBD>³é»0ç™?ï¼å<E280BA><C3A5>ä¹äº¦ç„?/param>
/// <param name="align">true为四字节对齐</param>
/// <returns>1位图</returns>
///
@ -1766,8 +1766,8 @@ namespace hg_imgproc
return SCANNER_ERR_OPEN_FILE_FAILED;
fseek(src, 0, SEEK_END);
len = ftell(src) - fh;
if (len <= 0)
len = ftell(src);
if (len <= fh + sizeof(bih))
{
fclose(src);
@ -1777,7 +1777,7 @@ namespace hg_imgproc
fseek(src, 0, SEEK_SET);
fread(&bfh, sizeof(bfh), 1, src);
fread(&bih, sizeof(bih), 1, src);
if (len < bfh.bfOffBits)
if (len < bfh.bfOffBits || len < bfh.bfSize)
{
fclose(src);
@ -1786,7 +1786,7 @@ namespace hg_imgproc
// we consider pallete as gray, discard pallete here ...
fseek(src, bfh.bfOffBits, SEEK_SET);
len -= bfh.bfOffBits;
// len -= bfh.bfOffBits;
data.reset(new std::vector<unsigned char>(len));
fread(&(*data.get())[0], 1, len, src);
fclose(src);
@ -1854,7 +1854,9 @@ namespace hg_imgproc
cpr.push_back(resolution_y);
if (conv->dst.is_file)
{
cv::imwrite(conv->dst.data, imsg, cpr);
std::string tmp(conv->dst.data);
cv::imwrite((tmp + ".jpg").c_str(), imsg, cpr);
rename((tmp + ".jpg").c_str(), tmp.c_str());
//FILE* f = fopen(conv->dst.data, "rb+");
//if (f)
@ -1867,7 +1869,7 @@ namespace hg_imgproc
}
else
{
std::string tmpf(hg_log::temporary_path() + PATH_SEPARATOR + "imgtrans.tmp");
std::string tmpf(hg_log::temporary_path() + PATH_SEPARATOR + "imgtrans.jpg");
cv::imwrite(tmpf.c_str(), imsg, cpr);
size_t bytes = 0;
conv->dst.data = (SANE_String_Const)G4Tiff::load_mini_file(tmpf.c_str(), &bytes, allocate_memory);