Home / cxImage6.0
Name Modified Size InfoDownloads / Week
Parent folder
600.txt 2022-12-08 115 Bytes
6.tif 2022-12-08 121 Bytes
readme.txt 2022-12-08 3.0 kB
cximg600.asm 2022-12-08 3.3 kB
8.tif 2022-12-08 121 Bytes
readme.gbk.txt 2022-12-08 2.7 kB
Totals: 6 Items   9.3 kB 0
  in 2019, we can download cximage600_demo.exe at
http://www.xdp.it/cgi-bin/dl7z.pl?cximage/600/cximage600_demo
But it has a little bug at rotate tif, which orientation=6 or 8.

----------- example 1 --------------------------------------------
  in 6.tif, the image data(which strip_offset=0x6e) is
80 //0th row image data= "8      "
a0 //1st row image data= "8   2  "
f0 //2nd row image data= "8 4 2 1"
80 //3rd row image data= "8      "

  This tif without rowsPerStrip,
but from the strip_offset in tif_file,
we can see 4 rows image data at here.

  And its orientation=6(which file offset=0x4e),
it means row 0=right hand side of image, col 0=top of image.

  Clearly, it is a image of capital letter 'F',
no rotate, no (left-right)mirror, no (upside-down)filp.

---------- example 2 ---------------------------------------------
 in 8.tif, the image data(which strip_offset=0x6e, too) is
10 //0th row image data= "      1"
f0 //1st row image data= "8 4 2 1"
50 //2nd row image data= "  4   1"
10 //3rd row image data= "      1"

  That tif without rowsPerStrip too,
but from the strip_offset in tif_file,
we can see 4 rows image data at there.

  And its orientation=8(which file offset=0x4e),
it means row 0=left hand side of image, col 0=bottom of image.

  Clearly, it is a image of capital letter 'F',
no rotate, no (left-right)mirror, no (upside-down)filp.

------------ asm ------------------------------------------------
  But cximage600_demo.exe show these tifs upside-down.

  We can see its' assembly code in cxImg600.asm,
which display function bool CxImageTIF::Decode()'s assembly code
(its' c code can be found in xImaTif.cpp).

  And we find it will be ok(no rotate, no mirror, no filp),
after I exchange the "case 6" and "case 8".
That means exchange 2 item in jump_table 0042E818, they
are the 4th item (memory address=0042E828, file offset=2e828) which value=0042E6EB,
and the 6th item (memory address=0042E830, file offset=2e830) which value=0042E74A.

  I just modify 2 dword(actually 4 bytes, because the "0042" are same),
so it runs better. Of cause, before modify the exe,
I back up it as "cxImg600.bak".

  To prove I just modify 4 bytes,
I input "fc /b cximg600.bak cximg600.exe" in my console.
If i want a file report, i can "fc /b cximg600.bak cximg600.exe > 600.txt".
so I get a text file, which name is "600.txt", and which content is:

Comparing files cximg600.bak and cxImg600.exe
0002E828: EB 4A
0002E829: E6 E7
0002E830: 4A EB
0002E831: E7 E6

------------ after word ------------------------------------------
  If you had download a same cxImage exe 6.0, after you notice bugs above, you can
1)send message to www.xdp.it...but it has error 404.
2)download the source code, compile by yourself...even you maybe not a programer.
3)rename your exe as cxImg600.bak, and input "difc.exe 600.txt" in console.
  Of course, the name of file is not import.
Source: readme.txt, updated 2022-12-08