I have attached a patch for the sane-backends source code. This attempts to provide alternate color de-interlacing for your scanner. It does not attempt to fix any edge cropping issues. Let me know if you need more instructions.
allan On Tue, Mar 15, 2016 at 7:59 PM, m. allan noah <kitno...@gmail.com> wrote: > Canon scanners often have this variable interlacing at different > resolutions, so I am not surprised to see this. However, this > particular scanner has the weirdest interlacing that canon does. If > you can compile from source, I can send you some patches to try. See > http://www.sane-project.org/README.linux > > allan > > On Tue, Mar 15, 2016 at 9:17 AM, el-ti <t...@ewetel.net> wrote: >> Unfortunately, yes. >> >> I uninstalled "cndrvsane-drc125" and restartet the system. The color shift >> is still there. >> >> And there is also the problem, that there is a 1/2 cm cut on the long edge >> of the scanned page (the "duplex-offset" option only handles the short edge) >> – but I guess this is another problem. >> >> If you need more information, do not hesitate to tell me. >> >> el-ti >> >> Am 15.03.2016 um 12:41 schrieb m. allan noah: >>> If you uninstall the Canon "DR-C125 Driver for Linux V1.0 (v1.0)" >>> software, does this color shift still happen? >>> >>> allan >>> >>> On Tue, Mar 15, 2016 at 7:37 AM, el-ti <t...@ewetel.net> wrote: >>> > The system is using the libsane version from the PPA: >>> > 1.0.26-git20160305-wily0 >>> > >>> > It was installed above the one from Ubuntu’s repositories, when I added >>> > the PPA. >>> > >>> > el-ti >>> > >>> > Am 15.03.2016 um 12:22 schrieb m. allan noah: >>> >> You have installed both sane-backends, and canon's driver? Which one >>> >> are you using? Assuming you are actually using sane-backends, we will >>> >> have to modify the code to control the color descrambling. >>> >> >>> >> allan >>> >> >>> >> On Tue, Mar 15, 2016 at 6:08 AM, el-ti <t...@ewetel.net> wrote: >>> >>> Hello, >>> >>> >>> >>> I have an appendix to make – maybe someone has a hint for me, why the >>> >>> scanner behaves really strange: >>> >>> >>> >>> Depending on the scanning resolution, the shifting on the color range is >>> >>> different! I used the following command to test this: >>> >>> >>> >>> scanimage --batch --source "ADF Duplex" --page-width 210 >>> >>> --page-height=297 -l 0 -t 0 -x 210 -y 297 --mode Color --resolution 300 >>> >>> >>> >>> Then I tried all available resolutions: 100, 150, 200, 240, 300, 400, >>> >>> 600. The results are strange: >>> >>> >>> >>> Scanning with 100,150,200 gives me: >>> >>> Blue -> Red >>> >>> Red -> Green >>> >>> Green -> Blue >>> >>> >>> >>> Scanning with 300 and 400 gives me: >>> >>> Blue -> Green >>> >>> Green -> Red >>> >>> Red -> Blue >>> >>> >>> >>> And scanning with 240 and 600 shows the RIGHT colors. >>> >>> >>> >>> How is that possible? And how can this problem be solved? >>> >>> >>> >>> >>> >>> I installed Rolf Bensch’s PPA >>> >>> (https://launchpad.net/~rolfbensch/+archive/ubuntu/sane-git), because it >>> >>> solved the back page cutting problem when scanning Duplex. (see >>> >>> http://permalink.gmane.org/gmane.comp.graphics.scanning.sane.devel/24903) >>> >>> >>> >>> Other than that, I only installed the Canon "DR-C125 Driver for Linux >>> >>> V1.0 (v1.0)". >>> >>> >>> >>> Any hint is appreciated! >>> >>> el-ti >>> >>> >>> >>> Am 04.03.2016 um 10:59 schrieb el-ti: >>> >>>> Dear Sane-developers and users, >>> >>>> >>> >>>> through this very helpful discussion >>> >>>> (http://permalink.gmane.org/gmane.comp.graphics.scanning.sane.devel/24903), >>> >>>> I managed to get my Canon Scanner working in Duplex without cutting 1 >>> >>>> cm >>> >>>> of the back page. >>> >>>> >>> >>>> Everything seems to work fine. However, I discovered a very strange >>> >>>> behaviour regarding the colour management: When scanning in simplex >>> >>>> mode, everything works fine. There is no page cutting and colours are >>> >>>> as >>> >>>> they should be. But in duplex mode, the colours are somehow shifted on >>> >>>> the colour range: Blue is scanned as green, green is scanned as red, >>> >>>> red >>> >>>> is scanned as blue (for both back and front page). >>> >>>> >>> >>>> Is there an easy solution for this? Or did I forget to install >>> >>>> something? >>> >>>> >>> >>>> Thank you very much! >>> >>>> el-ti >>> >>>> >>> >>> >>> >>> >>> >>> -- >>> >>> sane-devel mailing list: sane-devel@lists.alioth.debian.org >>> >>> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel >>> >>> Unsubscribe: Send mail with subject "unsubscribe your_password" >>> >>> to sane-devel-requ...@lists.alioth.debian.org >>> >> >>> >> >>> >> >>> > >>> >>> >>> >> > > > > -- > "well, I stand up next to a mountain- and I chop it down with the edge > of my hand" -- "well, I stand up next to a mountain- and I chop it down with the edge of my hand"
diff --git a/backend/canon_dr.c b/backend/canon_dr.c index da0a6a9..61ddbc5 100644 --- a/backend/canon_dr.c +++ b/backend/canon_dr.c @@ -329,6 +329,8 @@ - use bg_color to fill missing image data v54 2015-11-21, MAN - br_x and br_y locked to page_width/height until changed + v55 2016-03-15, MAN + - add new color interlace modes for DR-C125 SANE FLOW DIAGRAM @@ -379,7 +381,7 @@ #include "canon_dr.h" #define DEBUG 1 -#define BUILD 54 +#define BUILD 55 /* values for SANE_DEBUG_CANON_DR env var: - errors 5 @@ -1581,6 +1583,12 @@ init_model (struct scanner *s) s->rgb_format = 1; /*s->duplex_offset = 400; now set in config file*/ + s->color_inter_by_res[DPI_100] = COLOR_INTERLACE_2510_BRG; + s->color_inter_by_res[DPI_150] = COLOR_INTERLACE_2510_BRG; + s->color_inter_by_res[DPI_200] = COLOR_INTERLACE_2510_BRG; + s->color_inter_by_res[DPI_300] = COLOR_INTERLACE_2510_GBR; + s->color_inter_by_res[DPI_400] = COLOR_INTERLACE_2510_GBR; + /*only in Y direction, so we trash them in X*/ s->std_res_x[DPI_100]=0; s->std_res_x[DPI_150]=0; @@ -5123,6 +5131,60 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side) line[line_next++] = 0; } break; + + case COLOR_INTERLACE_2510_BRG: + DBG (17, "copy_simplex: color, 2510 BRG\n"); + + /* first read head (third byte of every three) */ + for(j=t-1;j>=0;j-=3){ + line[line_next++] = buf[i+t+j]; + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + } + /* second read head (first byte of every three) */ + for(j=f-3;j>=0;j-=3){ + line[line_next++] = buf[i+t+j]; + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + } + /* third read head (second byte of every three) */ + for(j=t-2;j>=0;j-=3){ + line[line_next++] = buf[i+t+j]; + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + } + /* padding */ + for(j=0;j<tw;j++){ + line[line_next++] = 0; + } + break; + + case COLOR_INTERLACE_2510_GBR: + DBG (17, "copy_simplex: color, 2510 GBR\n"); + + /* first read head (third byte of every three) */ + for(j=t-1;j>=0;j-=3){ + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + line[line_next++] = buf[i+t+j]; + } + /* second read head (first byte of every three) */ + for(j=f-3;j>=0;j-=3){ + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + line[line_next++] = buf[i+t+j]; + } + /* third read head (second byte of every three) */ + for(j=t-2;j>=0;j-=3){ + line[line_next++] = buf[i+2*t+j]; + line[line_next++] = buf[i+j]; + line[line_next++] = buf[i+t+j]; + } + /* padding */ + for(j=0;j<tw;j++){ + line[line_next++] = 0; + } + break; } } diff --git a/backend/canon_dr.h b/backend/canon_dr.h index 69618dc..24ee6cc 100644 --- a/backend/canon_dr.h +++ b/backend/canon_dr.h @@ -447,6 +447,8 @@ enum { #define COLOR_INTERLACE_RRGGBB 5 #define COLOR_INTERLACE_rRgGbB 6 #define COLOR_INTERLACE_2510 7 +#define COLOR_INTERLACE_2510_BRG 8 +#define COLOR_INTERLACE_2510_GBR 9 #define DUPLEX_INTERLACE_NONE 0 #define DUPLEX_INTERLACE_FFBB 1
-- sane-devel mailing list: sane-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel Unsubscribe: Send mail with subject "unsubscribe your_password" to sane-devel-requ...@lists.alioth.debian.org