调整多留输出导致颜色模式出问题
This commit is contained in:
parent
d93d82f5ec
commit
ecb8cce5b8
|
@ -16,7 +16,6 @@ g_color_mode[] =
|
|||
},
|
||||
g_multi_out[] =
|
||||
{
|
||||
{OPTION_VALUE_DLSC_W, MULTI_OUT_NOT},
|
||||
{OPTION_VALUE_DLSC_CS_HD_HB, MULTI_OUT_ALL},
|
||||
{OPTION_VALUE_DLSC_CS_HD, MULTI_COLOR_AND_GRAY},
|
||||
{OPTION_VALUE_DLSC_CS_HB, MULTI_COLOR_AND_BW},
|
||||
|
@ -182,7 +181,7 @@ int match_best_multi_out(std::string& val, bool* exact)
|
|||
bool yes = true;
|
||||
int ind = INVOKE_MATCH(g_multi_out, val, yes);
|
||||
|
||||
SET_DEFAULT_ON_FAIL(g_multi_out, ind, val, MULTI_OUT_NOT);
|
||||
SET_DEFAULT_ON_FAIL(g_multi_out, ind, val, MULTI_OUT_ALL);
|
||||
if (exact)
|
||||
*exact = yes;
|
||||
|
||||
|
|
|
@ -143,7 +143,6 @@ std::string color_mode_string(int clr_mode);
|
|||
//#define HUAGAO_SETTING_STR_MULTI_GRAY_ADN_BW "灰度+黑白"
|
||||
enum
|
||||
{
|
||||
MULTI_OUT_NOT = -1,
|
||||
MULTI_OUT_ALL = 0,
|
||||
MULTI_COLOR_AND_GRAY,
|
||||
MULTI_COLOR_AND_BW,
|
||||
|
|
|
@ -91,7 +91,7 @@ hg_scanner::hg_scanner(ScannerSerial serial
|
|||
, bright_(128), contrast_(4), gamma_(1.0f), threshold_(40), anti_noise_(8), margin_(5)
|
||||
, fractate_level_(50), ui_ev_cb_(ui_default_callback), scan_life_(NULL)
|
||||
, notify_setting_result_(false), user_cancel_(false), cb_mem_(true), test_1_paper_(false)
|
||||
, setting_count_(0),img_type_(""), online_(false),is_quality_(-1),is_color_fill(false),is_multiout(false)
|
||||
, setting_count_(0),img_type_(""), online_(false),is_quality_(-1),is_color_fill(false),is_multiout(false),save_multiout(OPTION_VALUE_DLSC_CS_HD_HB)
|
||||
{
|
||||
final_path_ = hg_log::ini_get("paths", "final_img");
|
||||
if(final_path_.empty())
|
||||
|
@ -934,26 +934,30 @@ int hg_scanner::setting_color_mode(void* data)
|
|||
int hg_scanner::setting_multi_out(void *data)
|
||||
{
|
||||
is_multiout = *((bool*)data);
|
||||
int val = image_prc_param_.bits.color_mode;
|
||||
|
||||
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "image_prc_param_.bits.multi_out %d ", image_prc_param_.bits.multi_out);
|
||||
|
||||
if (!is_multiout)
|
||||
on_color_mode_changed(val);
|
||||
|
||||
return SCANNER_ERR_OK;
|
||||
}
|
||||
int hg_scanner::setting_multi_out_type(void *data)
|
||||
{
|
||||
int ret = SCANNER_ERR_OK;
|
||||
if(image_prc_param_.bits.color_mode != 2)
|
||||
{
|
||||
ret = SCANNER_ERR_INVALID_PARAMETER;
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::string str((char*)data);
|
||||
|
||||
bool exact = check_range(setting_map_[HG_BASE_SETTING_INDEX_MULTI_OUT], str);
|
||||
int color;
|
||||
image_prc_param_.bits.multi_out = match_best_multi_out(str,NULL);
|
||||
|
||||
save_multiout = str;
|
||||
VLOG_MINI_3(LOG_LEVEL_DEBUG_INFO, "set multi_out type from %s to %s = %s\n", multi_out_string(image_prc_param_.bits.multi_out).c_str(), (char*)data, hg_scanner_err_name(ret));
|
||||
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW)
|
||||
color = COLOR_MODE_256_GRAY;
|
||||
|
||||
else
|
||||
color = COLOR_MODE_24_BITS;
|
||||
|
||||
|
@ -1797,7 +1801,19 @@ int hg_scanner::save_final_image(hg_imgproc::LPIMGHEAD head, void* buf)
|
|||
std::string bw("");
|
||||
|
||||
final_img_index_++;
|
||||
if (image_prc_param_.bits.color_mode == COLOR_MODE_BLACK_WHITE)
|
||||
bool is_1bit = false;
|
||||
if (image_prc_param_.bits.multi_out == MULTI_OUT_ALL && is_multiout)
|
||||
{
|
||||
if(final_img_index_%3 == 0)
|
||||
is_1bit = true;
|
||||
}
|
||||
else if ((image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout)
|
||||
{
|
||||
if(final_img_index_%2 == 0)
|
||||
is_1bit = true;
|
||||
}
|
||||
|
||||
if (img_conf_.pixtype == 0 || (is_1bit && is_multiout))
|
||||
{
|
||||
int old = head->line_bytes;
|
||||
bw = bmp_821((unsigned char*)buf, head->width, head->height, &head->line_bytes, async_io_);
|
||||
|
|
|
@ -100,6 +100,7 @@ class hg_scanner
|
|||
{
|
||||
bool notify_setting_result_;
|
||||
std::string name_;
|
||||
std::string save_multiout; //保存多留输出类型
|
||||
sane_callback ui_ev_cb_;
|
||||
do_when_born_and_dead<hg_scanner>* scan_life_;
|
||||
|
||||
|
|
|
@ -771,7 +771,7 @@ void hg_scanner_200::image_process(std::shared_ptr<tiny_buffer>& buffer)
|
|||
//HG_LOGHG_LOG_LEVEL_DEBUG_INFO,"图像拆分开启\r\n");
|
||||
}
|
||||
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !image_prc_param_.bits.multi_out)
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !is_multiout)
|
||||
{
|
||||
if(img_conf_.automaticcolor)
|
||||
{
|
||||
|
@ -1137,10 +1137,14 @@ else
|
|||
ic.multiOutput = MultiOutput::Unused;
|
||||
ic.fadeback = false;
|
||||
}
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && (image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS))
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout)
|
||||
{
|
||||
ic.pixtype = 1;
|
||||
}
|
||||
else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout)
|
||||
{
|
||||
ic.pixtype = 2;
|
||||
}
|
||||
img_conf_ = ic;
|
||||
|
||||
agreement();
|
||||
|
|
|
@ -674,7 +674,7 @@ void hg_scanner_239::image_process(std::shared_ptr<tiny_buffer>& buff)
|
|||
,img_conf_.is_duplex);
|
||||
}
|
||||
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !image_prc_param_.bits.multi_out)
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !is_multiout)
|
||||
{
|
||||
if(img_conf_.automaticcolor)
|
||||
{
|
||||
|
@ -891,10 +891,16 @@ else
|
|||
ic.multiOutput = MultiOutput::Unused;
|
||||
ic.fadeback = false;
|
||||
}
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && (image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS))
|
||||
//多留输出的处理
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout)
|
||||
{
|
||||
ic.pixtype = 1;
|
||||
}
|
||||
else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout)
|
||||
{
|
||||
ic.pixtype = 2;
|
||||
}
|
||||
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(io_lock_);
|
||||
|
||||
|
@ -1173,7 +1179,6 @@ int hg_scanner_239::on_color_mode_changed(int& color_mode)
|
|||
{
|
||||
dev_conf_.g200params.color = 1;
|
||||
}
|
||||
|
||||
HGSCANCONF d = dev_conf_;
|
||||
|
||||
if (image_prc_param_.bits.rid_color != RID_COLOR_NONE
|
||||
|
@ -1198,7 +1203,6 @@ int hg_scanner_239::on_color_mode_changed(int& color_mode)
|
|||
}
|
||||
if(color_mode == -1)
|
||||
ret = writedown_device_configuration(&d);
|
||||
|
||||
return ret;
|
||||
}
|
||||
int hg_scanner_239::on_paper_changed(int& paper)
|
||||
|
|
|
@ -736,7 +736,7 @@ void hg_scanner_300::image_process(std::shared_ptr<tiny_buffer>& buffer)
|
|||
//HG_LOGHG_LOG_LEVEL_DEBUG_INFO,"图像拆分开启\r\n");
|
||||
}
|
||||
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !image_prc_param_.bits.multi_out)
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !is_multiout)
|
||||
{
|
||||
if(img_conf_.automaticcolor)
|
||||
{
|
||||
|
@ -1055,10 +1055,14 @@ else
|
|||
ic.multiOutput = MultiOutput::Unused;
|
||||
ic.fadeback = false;
|
||||
}
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && (image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS))
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout)
|
||||
{
|
||||
ic.pixtype = 1;
|
||||
}
|
||||
else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout)
|
||||
{
|
||||
ic.pixtype = 2;
|
||||
}
|
||||
|
||||
img_conf_ = ic;
|
||||
|
||||
|
|
|
@ -733,7 +733,7 @@ void hg_scanner_400::image_process(std::shared_ptr<tiny_buffer>& buffer)
|
|||
//VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "图像拆分开启:%s\n",hg_scanner_err_name(ret));
|
||||
}
|
||||
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !image_prc_param_.bits.multi_out)
|
||||
if (!image_prc_param_.bits.split || !image_prc_param_.bits.rid_red || !is_multiout)
|
||||
{
|
||||
if(img_conf_.automaticcolor)
|
||||
{
|
||||
|
@ -1071,10 +1071,14 @@ void hg_scanner_400::writedown_image_configuration(void)
|
|||
ic.multiOutput = MultiOutput::Unused;
|
||||
ic.fadeback = false;
|
||||
}
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && (image_prc_param_.bits.color_mode == COLOR_MODE_24_BITS))
|
||||
if (image_prc_param_.bits.multi_out == MULTI_GRAY_AND_BW && is_multiout)
|
||||
{
|
||||
ic.pixtype = 1;
|
||||
}
|
||||
else if ((image_prc_param_.bits.multi_out == MULTI_OUT_ALL ||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_GRAY||image_prc_param_.bits.multi_out == MULTI_COLOR_AND_BW) && is_multiout)
|
||||
{
|
||||
ic.pixtype = 2;
|
||||
}
|
||||
img_conf_ = ic;
|
||||
|
||||
int ret = agreement((TwSS)img_conf_.papertype,img_conf_.paperAlign);
|
||||
|
|
Loading…
Reference in New Issue