isbn 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (288) hide show
  1. data/{README → README.md} +5 -11
  2. data/Rakefile +20 -14
  3. data/isbn.gemspec +23 -0
  4. data/lib/isbn.rb +2 -0
  5. data/test/isbn_spec.rb +1 -1
  6. metadata +29 -316
  7. data/VERSION +0 -1
  8. data/src/gocr-0.48/.cvsignore +0 -6
  9. data/src/gocr-0.48/AUTHORS +0 -7
  10. data/src/gocr-0.48/BUGS +0 -55
  11. data/src/gocr-0.48/CREDITS +0 -17
  12. data/src/gocr-0.48/HISTORY +0 -243
  13. data/src/gocr-0.48/INSTALL +0 -83
  14. data/src/gocr-0.48/Makefile +0 -193
  15. data/src/gocr-0.48/Makefile.in +0 -193
  16. data/src/gocr-0.48/README +0 -165
  17. data/src/gocr-0.48/READMEde.txt +0 -80
  18. data/src/gocr-0.48/REMARK.txt +0 -18
  19. data/src/gocr-0.48/REVIEW +0 -538
  20. data/src/gocr-0.48/TODO +0 -65
  21. data/src/gocr-0.48/bin/.cvsignore +0 -2
  22. data/src/gocr-0.48/bin/create_db +0 -38
  23. data/src/gocr-0.48/bin/gocr.tcl +0 -527
  24. data/src/gocr-0.48/bin/gocr_chk.sh +0 -44
  25. data/src/gocr-0.48/configure +0 -4689
  26. data/src/gocr-0.48/configure.in +0 -71
  27. data/src/gocr-0.48/doc/.#Makefile.1.6 +0 -39
  28. data/src/gocr-0.48/doc/.cvsignore +0 -2
  29. data/src/gocr-0.48/doc/Makefile +0 -39
  30. data/src/gocr-0.48/doc/Makefile.in +0 -39
  31. data/src/gocr-0.48/doc/example.dtd +0 -53
  32. data/src/gocr-0.48/doc/example.xml +0 -21
  33. data/src/gocr-0.48/doc/examples.txt +0 -67
  34. data/src/gocr-0.48/doc/gocr.html +0 -578
  35. data/src/gocr-0.48/doc/unicode.txt +0 -57
  36. data/src/gocr-0.48/examples/.#Makefile.1.22 +0 -166
  37. data/src/gocr-0.48/examples/4x6.png +0 -0
  38. data/src/gocr-0.48/examples/4x6.txt +0 -2
  39. data/src/gocr-0.48/examples/5x7.png +0 -0
  40. data/src/gocr-0.48/examples/5x7.png.txt +0 -2
  41. data/src/gocr-0.48/examples/5x8.png +0 -0
  42. data/src/gocr-0.48/examples/5x8.png.txt +0 -2
  43. data/src/gocr-0.48/examples/Makefile +0 -166
  44. data/src/gocr-0.48/examples/color.fig +0 -20
  45. data/src/gocr-0.48/examples/ex.fig +0 -16
  46. data/src/gocr-0.48/examples/font.tex +0 -22
  47. data/src/gocr-0.48/examples/font1.tex +0 -46
  48. data/src/gocr-0.48/examples/font2.fig +0 -27
  49. data/src/gocr-0.48/examples/font_nw.tex +0 -24
  50. data/src/gocr-0.48/examples/handwrt1.jpg +0 -0
  51. data/src/gocr-0.48/examples/handwrt1.txt +0 -10
  52. data/src/gocr-0.48/examples/inverse.fig +0 -20
  53. data/src/gocr-0.48/examples/matrix.jpg +0 -0
  54. data/src/gocr-0.48/examples/ocr-a-subset.png +0 -0
  55. data/src/gocr-0.48/examples/ocr-a-subset.png.txt +0 -4
  56. data/src/gocr-0.48/examples/ocr-a.png +0 -0
  57. data/src/gocr-0.48/examples/ocr-a.txt +0 -6
  58. data/src/gocr-0.48/examples/ocr-b.png +0 -0
  59. data/src/gocr-0.48/examples/ocr-b.png.txt +0 -4
  60. data/src/gocr-0.48/examples/polish.tex +0 -28
  61. data/src/gocr-0.48/examples/rotate45.fig +0 -14
  62. data/src/gocr-0.48/examples/score +0 -36
  63. data/src/gocr-0.48/examples/text.tex +0 -28
  64. data/src/gocr-0.48/gpl.html +0 -537
  65. data/src/gocr-0.48/include/.cvsignore +0 -2
  66. data/src/gocr-0.48/include/config.h +0 -36
  67. data/src/gocr-0.48/include/config.h.in +0 -36
  68. data/src/gocr-0.48/include/version.h +0 -2
  69. data/src/gocr-0.48/install-sh +0 -3
  70. data/src/gocr-0.48/make.bat +0 -57
  71. data/src/gocr-0.48/man/.cvsignore +0 -2
  72. data/src/gocr-0.48/man/Makefile +0 -29
  73. data/src/gocr-0.48/man/Makefile.in +0 -29
  74. data/src/gocr-0.48/man/man1/gocr.1 +0 -166
  75. data/src/gocr-0.48/src/.cvsignore +0 -4
  76. data/src/gocr-0.48/src/Makefile +0 -132
  77. data/src/gocr-0.48/src/Makefile.in +0 -132
  78. data/src/gocr-0.48/src/amiga.h +0 -31
  79. data/src/gocr-0.48/src/barcode.c +0 -846
  80. data/src/gocr-0.48/src/barcode.c.orig +0 -593
  81. data/src/gocr-0.48/src/barcode.h +0 -11
  82. data/src/gocr-0.48/src/box.c +0 -372
  83. data/src/gocr-0.48/src/database.c +0 -462
  84. data/src/gocr-0.48/src/detect.c +0 -943
  85. data/src/gocr-0.48/src/gocr.c +0 -373
  86. data/src/gocr-0.48/src/gocr.h +0 -288
  87. data/src/gocr-0.48/src/jconv.c +0 -168
  88. data/src/gocr-0.48/src/job.c +0 -84
  89. data/src/gocr-0.48/src/lines.c +0 -350
  90. data/src/gocr-0.48/src/list.c +0 -334
  91. data/src/gocr-0.48/src/list.h +0 -90
  92. data/src/gocr-0.48/src/ocr0.c +0 -6756
  93. data/src/gocr-0.48/src/ocr0.h +0 -63
  94. data/src/gocr-0.48/src/ocr0n.c +0 -1475
  95. data/src/gocr-0.48/src/ocr1.c +0 -85
  96. data/src/gocr-0.48/src/ocr1.h +0 -3
  97. data/src/gocr-0.48/src/otsu.c +0 -289
  98. data/src/gocr-0.48/src/otsu.h +0 -23
  99. data/src/gocr-0.48/src/output.c +0 -289
  100. data/src/gocr-0.48/src/output.h +0 -37
  101. data/src/gocr-0.48/src/pcx.c +0 -153
  102. data/src/gocr-0.48/src/pcx.h +0 -9
  103. data/src/gocr-0.48/src/pgm2asc.c +0 -2893
  104. data/src/gocr-0.48/src/pgm2asc.h +0 -105
  105. data/src/gocr-0.48/src/pixel.c +0 -537
  106. data/src/gocr-0.48/src/pnm.c +0 -533
  107. data/src/gocr-0.48/src/pnm.h +0 -35
  108. data/src/gocr-0.48/src/progress.c +0 -87
  109. data/src/gocr-0.48/src/progress.h +0 -42
  110. data/src/gocr-0.48/src/remove.c +0 -703
  111. data/src/gocr-0.48/src/tga.c +0 -87
  112. data/src/gocr-0.48/src/tga.h +0 -6
  113. data/src/gocr-0.48/src/unicode.c +0 -1314
  114. data/src/gocr-0.48/src/unicode.h +0 -1257
  115. data/src/jpeg-7/Makefile.am +0 -133
  116. data/src/jpeg-7/Makefile.in +0 -1089
  117. data/src/jpeg-7/README +0 -322
  118. data/src/jpeg-7/aclocal.m4 +0 -8990
  119. data/src/jpeg-7/ansi2knr.1 +0 -36
  120. data/src/jpeg-7/ansi2knr.c +0 -739
  121. data/src/jpeg-7/cderror.h +0 -132
  122. data/src/jpeg-7/cdjpeg.c +0 -181
  123. data/src/jpeg-7/cdjpeg.h +0 -187
  124. data/src/jpeg-7/change.log +0 -270
  125. data/src/jpeg-7/cjpeg.1 +0 -325
  126. data/src/jpeg-7/cjpeg.c +0 -616
  127. data/src/jpeg-7/ckconfig.c +0 -402
  128. data/src/jpeg-7/coderules.txt +0 -118
  129. data/src/jpeg-7/config.guess +0 -1561
  130. data/src/jpeg-7/config.sub +0 -1686
  131. data/src/jpeg-7/configure +0 -17139
  132. data/src/jpeg-7/configure.ac +0 -317
  133. data/src/jpeg-7/depcomp +0 -630
  134. data/src/jpeg-7/djpeg.1 +0 -251
  135. data/src/jpeg-7/djpeg.c +0 -617
  136. data/src/jpeg-7/example.c +0 -433
  137. data/src/jpeg-7/filelist.txt +0 -215
  138. data/src/jpeg-7/install-sh +0 -520
  139. data/src/jpeg-7/install.txt +0 -1097
  140. data/src/jpeg-7/jaricom.c +0 -148
  141. data/src/jpeg-7/jcapimin.c +0 -282
  142. data/src/jpeg-7/jcapistd.c +0 -161
  143. data/src/jpeg-7/jcarith.c +0 -921
  144. data/src/jpeg-7/jccoefct.c +0 -453
  145. data/src/jpeg-7/jccolor.c +0 -459
  146. data/src/jpeg-7/jcdctmgr.c +0 -482
  147. data/src/jpeg-7/jchuff.c +0 -1612
  148. data/src/jpeg-7/jcinit.c +0 -65
  149. data/src/jpeg-7/jcmainct.c +0 -293
  150. data/src/jpeg-7/jcmarker.c +0 -667
  151. data/src/jpeg-7/jcmaster.c +0 -770
  152. data/src/jpeg-7/jcomapi.c +0 -106
  153. data/src/jpeg-7/jconfig.bcc +0 -48
  154. data/src/jpeg-7/jconfig.cfg +0 -45
  155. data/src/jpeg-7/jconfig.dj +0 -38
  156. data/src/jpeg-7/jconfig.mac +0 -43
  157. data/src/jpeg-7/jconfig.manx +0 -43
  158. data/src/jpeg-7/jconfig.mc6 +0 -52
  159. data/src/jpeg-7/jconfig.sas +0 -43
  160. data/src/jpeg-7/jconfig.st +0 -42
  161. data/src/jpeg-7/jconfig.txt +0 -155
  162. data/src/jpeg-7/jconfig.vc +0 -45
  163. data/src/jpeg-7/jconfig.vms +0 -37
  164. data/src/jpeg-7/jconfig.wat +0 -38
  165. data/src/jpeg-7/jcparam.c +0 -632
  166. data/src/jpeg-7/jcprepct.c +0 -358
  167. data/src/jpeg-7/jcsample.c +0 -545
  168. data/src/jpeg-7/jctrans.c +0 -381
  169. data/src/jpeg-7/jdapimin.c +0 -396
  170. data/src/jpeg-7/jdapistd.c +0 -275
  171. data/src/jpeg-7/jdarith.c +0 -762
  172. data/src/jpeg-7/jdatadst.c +0 -151
  173. data/src/jpeg-7/jdatasrc.c +0 -212
  174. data/src/jpeg-7/jdcoefct.c +0 -736
  175. data/src/jpeg-7/jdcolor.c +0 -396
  176. data/src/jpeg-7/jdct.h +0 -393
  177. data/src/jpeg-7/jddctmgr.c +0 -382
  178. data/src/jpeg-7/jdhuff.c +0 -1309
  179. data/src/jpeg-7/jdinput.c +0 -384
  180. data/src/jpeg-7/jdmainct.c +0 -512
  181. data/src/jpeg-7/jdmarker.c +0 -1360
  182. data/src/jpeg-7/jdmaster.c +0 -663
  183. data/src/jpeg-7/jdmerge.c +0 -400
  184. data/src/jpeg-7/jdpostct.c +0 -290
  185. data/src/jpeg-7/jdsample.c +0 -361
  186. data/src/jpeg-7/jdtrans.c +0 -136
  187. data/src/jpeg-7/jerror.c +0 -252
  188. data/src/jpeg-7/jerror.h +0 -304
  189. data/src/jpeg-7/jfdctflt.c +0 -174
  190. data/src/jpeg-7/jfdctfst.c +0 -230
  191. data/src/jpeg-7/jfdctint.c +0 -4348
  192. data/src/jpeg-7/jidctflt.c +0 -242
  193. data/src/jpeg-7/jidctfst.c +0 -368
  194. data/src/jpeg-7/jidctint.c +0 -5137
  195. data/src/jpeg-7/jinclude.h +0 -91
  196. data/src/jpeg-7/jmemansi.c +0 -167
  197. data/src/jpeg-7/jmemdos.c +0 -638
  198. data/src/jpeg-7/jmemdosa.asm +0 -379
  199. data/src/jpeg-7/jmemmac.c +0 -289
  200. data/src/jpeg-7/jmemmgr.c +0 -1118
  201. data/src/jpeg-7/jmemname.c +0 -276
  202. data/src/jpeg-7/jmemnobs.c +0 -109
  203. data/src/jpeg-7/jmemsys.h +0 -198
  204. data/src/jpeg-7/jmorecfg.h +0 -369
  205. data/src/jpeg-7/jpegint.h +0 -395
  206. data/src/jpeg-7/jpeglib.h +0 -1135
  207. data/src/jpeg-7/jpegtran.1 +0 -272
  208. data/src/jpeg-7/jpegtran.c +0 -546
  209. data/src/jpeg-7/jquant1.c +0 -856
  210. data/src/jpeg-7/jquant2.c +0 -1310
  211. data/src/jpeg-7/jutils.c +0 -179
  212. data/src/jpeg-7/jversion.h +0 -14
  213. data/src/jpeg-7/libjpeg.map +0 -4
  214. data/src/jpeg-7/libjpeg.txt +0 -3067
  215. data/src/jpeg-7/ltmain.sh +0 -8406
  216. data/src/jpeg-7/makcjpeg.st +0 -36
  217. data/src/jpeg-7/makdjpeg.st +0 -36
  218. data/src/jpeg-7/makeadsw.vc6 +0 -77
  219. data/src/jpeg-7/makeasln.vc9 +0 -33
  220. data/src/jpeg-7/makecdep.vc6 +0 -82
  221. data/src/jpeg-7/makecdsp.vc6 +0 -130
  222. data/src/jpeg-7/makecmak.vc6 +0 -159
  223. data/src/jpeg-7/makecvcp.vc9 +0 -186
  224. data/src/jpeg-7/makeddep.vc6 +0 -82
  225. data/src/jpeg-7/makeddsp.vc6 +0 -130
  226. data/src/jpeg-7/makedmak.vc6 +0 -159
  227. data/src/jpeg-7/makedvcp.vc9 +0 -186
  228. data/src/jpeg-7/makefile.ansi +0 -220
  229. data/src/jpeg-7/makefile.bcc +0 -291
  230. data/src/jpeg-7/makefile.dj +0 -226
  231. data/src/jpeg-7/makefile.manx +0 -220
  232. data/src/jpeg-7/makefile.mc6 +0 -255
  233. data/src/jpeg-7/makefile.mms +0 -224
  234. data/src/jpeg-7/makefile.sas +0 -258
  235. data/src/jpeg-7/makefile.unix +0 -234
  236. data/src/jpeg-7/makefile.vc +0 -217
  237. data/src/jpeg-7/makefile.vms +0 -142
  238. data/src/jpeg-7/makefile.wat +0 -239
  239. data/src/jpeg-7/makejdep.vc6 +0 -423
  240. data/src/jpeg-7/makejdsp.vc6 +0 -285
  241. data/src/jpeg-7/makejdsw.vc6 +0 -29
  242. data/src/jpeg-7/makejmak.vc6 +0 -425
  243. data/src/jpeg-7/makejsln.vc9 +0 -17
  244. data/src/jpeg-7/makejvcp.vc9 +0 -328
  245. data/src/jpeg-7/makeproj.mac +0 -213
  246. data/src/jpeg-7/makerdep.vc6 +0 -6
  247. data/src/jpeg-7/makerdsp.vc6 +0 -78
  248. data/src/jpeg-7/makermak.vc6 +0 -110
  249. data/src/jpeg-7/makervcp.vc9 +0 -133
  250. data/src/jpeg-7/maketdep.vc6 +0 -43
  251. data/src/jpeg-7/maketdsp.vc6 +0 -122
  252. data/src/jpeg-7/maketmak.vc6 +0 -131
  253. data/src/jpeg-7/maketvcp.vc9 +0 -178
  254. data/src/jpeg-7/makewdep.vc6 +0 -6
  255. data/src/jpeg-7/makewdsp.vc6 +0 -78
  256. data/src/jpeg-7/makewmak.vc6 +0 -110
  257. data/src/jpeg-7/makewvcp.vc9 +0 -133
  258. data/src/jpeg-7/makljpeg.st +0 -68
  259. data/src/jpeg-7/maktjpeg.st +0 -30
  260. data/src/jpeg-7/makvms.opt +0 -4
  261. data/src/jpeg-7/missing +0 -376
  262. data/src/jpeg-7/rdbmp.c +0 -439
  263. data/src/jpeg-7/rdcolmap.c +0 -253
  264. data/src/jpeg-7/rdgif.c +0 -38
  265. data/src/jpeg-7/rdjpgcom.1 +0 -63
  266. data/src/jpeg-7/rdjpgcom.c +0 -515
  267. data/src/jpeg-7/rdppm.c +0 -459
  268. data/src/jpeg-7/rdrle.c +0 -387
  269. data/src/jpeg-7/rdswitch.c +0 -365
  270. data/src/jpeg-7/rdtarga.c +0 -500
  271. data/src/jpeg-7/structure.txt +0 -945
  272. data/src/jpeg-7/testimg.bmp +0 -0
  273. data/src/jpeg-7/testimg.jpg +0 -0
  274. data/src/jpeg-7/testimg.ppm +0 -4
  275. data/src/jpeg-7/testimgp.jpg +0 -0
  276. data/src/jpeg-7/testorig.jpg +0 -0
  277. data/src/jpeg-7/testprog.jpg +0 -0
  278. data/src/jpeg-7/transupp.c +0 -1533
  279. data/src/jpeg-7/transupp.h +0 -205
  280. data/src/jpeg-7/usage.txt +0 -605
  281. data/src/jpeg-7/wizard.txt +0 -211
  282. data/src/jpeg-7/wrbmp.c +0 -442
  283. data/src/jpeg-7/wrgif.c +0 -399
  284. data/src/jpeg-7/wrjpgcom.1 +0 -103
  285. data/src/jpeg-7/wrjpgcom.c +0 -583
  286. data/src/jpeg-7/wrppm.c +0 -269
  287. data/src/jpeg-7/wrrle.c +0 -305
  288. data/src/jpeg-7/wrtarga.c +0 -253
@@ -1,205 +0,0 @@
1
- /*
2
- * transupp.h
3
- *
4
- * Copyright (C) 1997-2001, Thomas G. Lane.
5
- * This file is part of the Independent JPEG Group's software.
6
- * For conditions of distribution and use, see the accompanying README file.
7
- *
8
- * This file contains declarations for image transformation routines and
9
- * other utility code used by the jpegtran sample application. These are
10
- * NOT part of the core JPEG library. But we keep these routines separate
11
- * from jpegtran.c to ease the task of maintaining jpegtran-like programs
12
- * that have other user interfaces.
13
- *
14
- * NOTE: all the routines declared here have very specific requirements
15
- * about when they are to be executed during the reading and writing of the
16
- * source and destination files. See the comments in transupp.c, or see
17
- * jpegtran.c for an example of correct usage.
18
- */
19
-
20
- /* If you happen not to want the image transform support, disable it here */
21
- #ifndef TRANSFORMS_SUPPORTED
22
- #define TRANSFORMS_SUPPORTED 1 /* 0 disables transform code */
23
- #endif
24
-
25
- /*
26
- * Although rotating and flipping data expressed as DCT coefficients is not
27
- * hard, there is an asymmetry in the JPEG format specification for images
28
- * whose dimensions aren't multiples of the iMCU size. The right and bottom
29
- * image edges are padded out to the next iMCU boundary with junk data; but
30
- * no padding is possible at the top and left edges. If we were to flip
31
- * the whole image including the pad data, then pad garbage would become
32
- * visible at the top and/or left, and real pixels would disappear into the
33
- * pad margins --- perhaps permanently, since encoders & decoders may not
34
- * bother to preserve DCT blocks that appear to be completely outside the
35
- * nominal image area. So, we have to exclude any partial iMCUs from the
36
- * basic transformation.
37
- *
38
- * Transpose is the only transformation that can handle partial iMCUs at the
39
- * right and bottom edges completely cleanly. flip_h can flip partial iMCUs
40
- * at the bottom, but leaves any partial iMCUs at the right edge untouched.
41
- * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched.
42
- * The other transforms are defined as combinations of these basic transforms
43
- * and process edge blocks in a way that preserves the equivalence.
44
- *
45
- * The "trim" option causes untransformable partial iMCUs to be dropped;
46
- * this is not strictly lossless, but it usually gives the best-looking
47
- * result for odd-size images. Note that when this option is active,
48
- * the expected mathematical equivalences between the transforms may not hold.
49
- * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim
50
- * followed by -rot 180 -trim trims both edges.)
51
- *
52
- * We also offer a lossless-crop option, which discards data outside a given
53
- * image region but losslessly preserves what is inside. Like the rotate and
54
- * flip transforms, lossless crop is restricted by the JPEG format: the upper
55
- * left corner of the selected region must fall on an iMCU boundary. If this
56
- * does not hold for the given crop parameters, we silently move the upper left
57
- * corner up and/or left to make it so, simultaneously increasing the region
58
- * dimensions to keep the lower right crop corner unchanged. (Thus, the
59
- * output image covers at least the requested region, but may cover more.)
60
- *
61
- * If both crop and a rotate/flip transform are requested, the crop is applied
62
- * last --- that is, the crop region is specified in terms of the destination
63
- * image.
64
- *
65
- * We also offer a "force to grayscale" option, which simply discards the
66
- * chrominance channels of a YCbCr image. This is lossless in the sense that
67
- * the luminance channel is preserved exactly. It's not the same kind of
68
- * thing as the rotate/flip transformations, but it's convenient to handle it
69
- * as part of this package, mainly because the transformation routines have to
70
- * be aware of the option to know how many components to work on.
71
- */
72
-
73
-
74
- /* Short forms of external names for systems with brain-damaged linkers. */
75
-
76
- #ifdef NEED_SHORT_EXTERNAL_NAMES
77
- #define jtransform_parse_crop_spec jTrParCrop
78
- #define jtransform_request_workspace jTrRequest
79
- #define jtransform_adjust_parameters jTrAdjust
80
- #define jtransform_execute_transform jTrExec
81
- #define jtransform_perfect_transform jTrPerfect
82
- #define jcopy_markers_setup jCMrkSetup
83
- #define jcopy_markers_execute jCMrkExec
84
- #endif /* NEED_SHORT_EXTERNAL_NAMES */
85
-
86
-
87
- /*
88
- * Codes for supported types of image transformations.
89
- */
90
-
91
- typedef enum {
92
- JXFORM_NONE, /* no transformation */
93
- JXFORM_FLIP_H, /* horizontal flip */
94
- JXFORM_FLIP_V, /* vertical flip */
95
- JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */
96
- JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */
97
- JXFORM_ROT_90, /* 90-degree clockwise rotation */
98
- JXFORM_ROT_180, /* 180-degree rotation */
99
- JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */
100
- } JXFORM_CODE;
101
-
102
- /*
103
- * Codes for crop parameters, which can individually be unspecified,
104
- * positive, or negative. (Negative width or height makes no sense, though.)
105
- */
106
-
107
- typedef enum {
108
- JCROP_UNSET,
109
- JCROP_POS,
110
- JCROP_NEG
111
- } JCROP_CODE;
112
-
113
- /*
114
- * Transform parameters struct.
115
- * NB: application must not change any elements of this struct after
116
- * calling jtransform_request_workspace.
117
- */
118
-
119
- typedef struct {
120
- /* Options: set by caller */
121
- JXFORM_CODE transform; /* image transform operator */
122
- boolean perfect; /* if TRUE, fail if partial MCUs are requested */
123
- boolean trim; /* if TRUE, trim partial MCUs as needed */
124
- boolean force_grayscale; /* if TRUE, convert color image to grayscale */
125
- boolean crop; /* if TRUE, crop source image */
126
-
127
- /* Crop parameters: application need not set these unless crop is TRUE.
128
- * These can be filled in by jtransform_parse_crop_spec().
129
- */
130
- JDIMENSION crop_width; /* Width of selected region */
131
- JCROP_CODE crop_width_set;
132
- JDIMENSION crop_height; /* Height of selected region */
133
- JCROP_CODE crop_height_set;
134
- JDIMENSION crop_xoffset; /* X offset of selected region */
135
- JCROP_CODE crop_xoffset_set; /* (negative measures from right edge) */
136
- JDIMENSION crop_yoffset; /* Y offset of selected region */
137
- JCROP_CODE crop_yoffset_set; /* (negative measures from bottom edge) */
138
-
139
- /* Internal workspace: caller should not touch these */
140
- int num_components; /* # of components in workspace */
141
- jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */
142
- JDIMENSION output_width; /* cropped destination dimensions */
143
- JDIMENSION output_height;
144
- JDIMENSION x_crop_offset; /* destination crop offsets measured in iMCUs */
145
- JDIMENSION y_crop_offset;
146
- int max_h_samp_factor; /* destination iMCU size */
147
- int max_v_samp_factor;
148
- } jpeg_transform_info;
149
-
150
-
151
- #if TRANSFORMS_SUPPORTED
152
-
153
- /* Parse a crop specification (written in X11 geometry style) */
154
- EXTERN(boolean) jtransform_parse_crop_spec
155
- JPP((jpeg_transform_info *info, const char *spec));
156
- /* Request any required workspace */
157
- EXTERN(void) jtransform_request_workspace
158
- JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info));
159
- /* Adjust output image parameters */
160
- EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters
161
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
162
- jvirt_barray_ptr *src_coef_arrays,
163
- jpeg_transform_info *info));
164
- /* Execute the actual transformation, if any */
165
- EXTERN(void) jtransform_execute_transform
166
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
167
- jvirt_barray_ptr *src_coef_arrays,
168
- jpeg_transform_info *info));
169
- /* Determine whether lossless transformation is perfectly
170
- * possible for a specified image and transformation.
171
- */
172
- EXTERN(boolean) jtransform_perfect_transform
173
- JPP((JDIMENSION image_width, JDIMENSION image_height,
174
- int MCU_width, int MCU_height,
175
- JXFORM_CODE transform));
176
-
177
- /* jtransform_execute_transform used to be called
178
- * jtransform_execute_transformation, but some compilers complain about
179
- * routine names that long. This macro is here to avoid breaking any
180
- * old source code that uses the original name...
181
- */
182
- #define jtransform_execute_transformation jtransform_execute_transform
183
-
184
- #endif /* TRANSFORMS_SUPPORTED */
185
-
186
-
187
- /*
188
- * Support for copying optional markers from source to destination file.
189
- */
190
-
191
- typedef enum {
192
- JCOPYOPT_NONE, /* copy no optional markers */
193
- JCOPYOPT_COMMENTS, /* copy only comment (COM) markers */
194
- JCOPYOPT_ALL /* copy all optional markers */
195
- } JCOPY_OPTION;
196
-
197
- #define JCOPYOPT_DEFAULT JCOPYOPT_COMMENTS /* recommended default */
198
-
199
- /* Setup decompression object to save desired markers in memory */
200
- EXTERN(void) jcopy_markers_setup
201
- JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option));
202
- /* Copy markers saved in the given source object to the destination object */
203
- EXTERN(void) jcopy_markers_execute
204
- JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
205
- JCOPY_OPTION option));
data/src/jpeg-7/usage.txt DELETED
@@ -1,605 +0,0 @@
1
- USAGE instructions for the Independent JPEG Group's JPEG software
2
- =================================================================
3
-
4
- This file describes usage of the JPEG conversion programs cjpeg and djpeg,
5
- as well as the utility programs jpegtran, rdjpgcom and wrjpgcom. (See
6
- the other documentation files if you wish to use the JPEG library within
7
- your own programs.)
8
-
9
- If you are on a Unix machine you may prefer to read the Unix-style manual
10
- pages in files cjpeg.1, djpeg.1, jpegtran.1, rdjpgcom.1, wrjpgcom.1.
11
-
12
-
13
- INTRODUCTION
14
-
15
- These programs implement JPEG image encoding, decoding, and transcoding.
16
- JPEG (pronounced "jay-peg") is a standardized compression method for
17
- full-color and gray-scale images.
18
-
19
-
20
- GENERAL USAGE
21
-
22
- We provide two programs, cjpeg to compress an image file into JPEG format,
23
- and djpeg to decompress a JPEG file back into a conventional image format.
24
-
25
- On Unix-like systems, you say:
26
- cjpeg [switches] [imagefile] >jpegfile
27
- or
28
- djpeg [switches] [jpegfile] >imagefile
29
- The programs read the specified input file, or standard input if none is
30
- named. They always write to standard output (with trace/error messages to
31
- standard error). These conventions are handy for piping images between
32
- programs.
33
-
34
- On most non-Unix systems, you say:
35
- cjpeg [switches] imagefile jpegfile
36
- or
37
- djpeg [switches] jpegfile imagefile
38
- i.e., both the input and output files are named on the command line. This
39
- style is a little more foolproof, and it loses no functionality if you don't
40
- have pipes. (You can get this style on Unix too, if you prefer, by defining
41
- TWO_FILE_COMMANDLINE when you compile the programs; see install.txt.)
42
-
43
- You can also say:
44
- cjpeg [switches] -outfile jpegfile imagefile
45
- or
46
- djpeg [switches] -outfile imagefile jpegfile
47
- This syntax works on all systems, so it is useful for scripts.
48
-
49
- The currently supported image file formats are: PPM (PBMPLUS color format),
50
- PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster Toolkit
51
- format). (RLE is supported only if the URT library is available.)
52
- cjpeg recognizes the input image format automatically, with the exception
53
- of some Targa-format files. You have to tell djpeg which format to generate.
54
-
55
- JPEG files are in the defacto standard JFIF file format. There are other,
56
- less widely used JPEG-based file formats, but we don't support them.
57
-
58
- All switch names may be abbreviated; for example, -grayscale may be written
59
- -gray or -gr. Most of the "basic" switches can be abbreviated to as little as
60
- one letter. Upper and lower case are equivalent (-BMP is the same as -bmp).
61
- British spellings are also accepted (e.g., -greyscale), though for brevity
62
- these are not mentioned below.
63
-
64
-
65
- CJPEG DETAILS
66
-
67
- The basic command line switches for cjpeg are:
68
-
69
- -quality N[,...] Scale quantization tables to adjust image quality.
70
- Quality is 0 (worst) to 100 (best); default is 75.
71
- (See below for more info.)
72
-
73
- -grayscale Create monochrome JPEG file from color input.
74
- Be sure to use this switch when compressing a grayscale
75
- BMP file, because cjpeg isn't bright enough to notice
76
- whether a BMP file uses only shades of gray. By
77
- saying -grayscale, you'll get a smaller JPEG file that
78
- takes less time to process.
79
-
80
- -optimize Perform optimization of entropy encoding parameters.
81
- Without this, default encoding parameters are used.
82
- -optimize usually makes the JPEG file a little smaller,
83
- but cjpeg runs somewhat slower and needs much more
84
- memory. Image quality and speed of decompression are
85
- unaffected by -optimize.
86
-
87
- -progressive Create progressive JPEG file (see below).
88
-
89
- -scale M/N Scale the output image by a factor M/N. Currently
90
- supported scale factors are 8/N with all N from 1 to
91
- 16.
92
-
93
- -targa Input file is Targa format. Targa files that contain
94
- an "identification" field will not be automatically
95
- recognized by cjpeg; for such files you must specify
96
- -targa to make cjpeg treat the input as Targa format.
97
- For most Targa files, you won't need this switch.
98
-
99
- The -quality switch lets you trade off compressed file size against quality of
100
- the reconstructed image: the higher the quality setting, the larger the JPEG
101
- file, and the closer the output image will be to the original input. Normally
102
- you want to use the lowest quality setting (smallest file) that decompresses
103
- into something visually indistinguishable from the original image. For this
104
- purpose the quality setting should be between 50 and 95; the default of 75 is
105
- often about right. If you see defects at -quality 75, then go up 5 or 10
106
- counts at a time until you are happy with the output image. (The optimal
107
- setting will vary from one image to another.)
108
-
109
- -quality 100 will generate a quantization table of all 1's, minimizing loss
110
- in the quantization step (but there is still information loss in subsampling,
111
- as well as roundoff error). This setting is mainly of interest for
112
- experimental purposes. Quality values above about 95 are NOT recommended for
113
- normal use; the compressed file size goes up dramatically for hardly any gain
114
- in output image quality.
115
-
116
- In the other direction, quality values below 50 will produce very small files
117
- of low image quality. Settings around 5 to 10 might be useful in preparing an
118
- index of a large image library, for example. Try -quality 2 (or so) for some
119
- amusing Cubist effects. (Note: quality values below about 25 generate 2-byte
120
- quantization tables, which are considered optional in the JPEG standard.
121
- cjpeg emits a warning message when you give such a quality value, because some
122
- other JPEG programs may be unable to decode the resulting file. Use -baseline
123
- if you need to ensure compatibility at low quality values.)
124
-
125
- The -quality option has been extended in IJG version 7 for support of separate
126
- quality settings for luminance and chrominance (or in general, for every
127
- provided quantization table slot). This feature is useful for high-quality
128
- applications which cannot accept the damage of color data by coarse
129
- subsampling settings. You can now easily reduce the color data amount more
130
- smoothly with finer control without separate subsampling. The resulting file
131
- is fully compliant with standard JPEG decoders.
132
- Note that the -quality ratings refer to the quantization table slots, and that
133
- the last value is replicated if there are more q-table slots than parameters.
134
- The default q-table slots are 0 for luminance and 1 for chrominance with
135
- default tables as given in the JPEG standard. This is compatible with the old
136
- behaviour in case that only one parameter is given, which is then used for
137
- both luminance and chrominance (slots 0 and 1). More or custom quantization
138
- tables can be set with -qtables and assigned to components with -qslots
139
- parameter (see the "wizard" switches below).
140
- CAUTION: You must explicitely add -sample 1x1 for efficient separate color
141
- quality selection, since the default value used by library is 2x2!
142
-
143
- The -progressive switch creates a "progressive JPEG" file. In this type of
144
- JPEG file, the data is stored in multiple scans of increasing quality. If the
145
- file is being transmitted over a slow communications link, the decoder can use
146
- the first scan to display a low-quality image very quickly, and can then
147
- improve the display with each subsequent scan. The final image is exactly
148
- equivalent to a standard JPEG file of the same quality setting, and the total
149
- file size is about the same --- often a little smaller.
150
-
151
- Switches for advanced users:
152
-
153
- -dct int Use integer DCT method (default).
154
- -dct fast Use fast integer DCT (less accurate).
155
- -dct float Use floating-point DCT method.
156
- The float method is very slightly more accurate than
157
- the int method, but is much slower unless your machine
158
- has very fast floating-point hardware. Also note that
159
- results of the floating-point method may vary slightly
160
- across machines, while the integer methods should give
161
- the same results everywhere. The fast integer method
162
- is much less accurate than the other two.
163
-
164
- -nosmooth Don't use high-quality downsampling.
165
-
166
- -restart N Emit a JPEG restart marker every N MCU rows, or every
167
- N MCU blocks if "B" is attached to the number.
168
- -restart 0 (the default) means no restart markers.
169
-
170
- -smooth N Smooth the input image to eliminate dithering noise.
171
- N, ranging from 1 to 100, indicates the strength of
172
- smoothing. 0 (the default) means no smoothing.
173
-
174
- -maxmemory N Set limit for amount of memory to use in processing
175
- large images. Value is in thousands of bytes, or
176
- millions of bytes if "M" is attached to the number.
177
- For example, -max 4m selects 4000000 bytes. If more
178
- space is needed, temporary files will be used.
179
-
180
- -verbose Enable debug printout. More -v's give more printout.
181
- or -debug Also, version information is printed at startup.
182
-
183
- The -restart option inserts extra markers that allow a JPEG decoder to
184
- resynchronize after a transmission error. Without restart markers, any damage
185
- to a compressed file will usually ruin the image from the point of the error
186
- to the end of the image; with restart markers, the damage is usually confined
187
- to the portion of the image up to the next restart marker. Of course, the
188
- restart markers occupy extra space. We recommend -restart 1 for images that
189
- will be transmitted across unreliable networks such as Usenet.
190
-
191
- The -smooth option filters the input to eliminate fine-scale noise. This is
192
- often useful when converting dithered images to JPEG: a moderate smoothing
193
- factor of 10 to 50 gets rid of dithering patterns in the input file, resulting
194
- in a smaller JPEG file and a better-looking image. Too large a smoothing
195
- factor will visibly blur the image, however.
196
-
197
- Switches for wizards:
198
-
199
- -arithmetic Use arithmetic coding. CAUTION: arithmetic coded JPEG
200
- is not yet widely implemented, so many decoders will
201
- be unable to view an arithmetic coded JPEG file at
202
- all.
203
-
204
- -baseline Force baseline-compatible quantization tables to be
205
- generated. This clamps quantization values to 8 bits
206
- even at low quality settings. (This switch is poorly
207
- named, since it does not ensure that the output is
208
- actually baseline JPEG. For example, you can use
209
- -baseline and -progressive together.)
210
-
211
- -qtables file Use the quantization tables given in the specified
212
- text file.
213
-
214
- -qslots N[,...] Select which quantization table to use for each color
215
- component.
216
-
217
- -sample HxV[,...] Set JPEG sampling factors for each color component.
218
-
219
- -scans file Use the scan script given in the specified text file.
220
-
221
- The "wizard" switches are intended for experimentation with JPEG. If you
222
- don't know what you are doing, DON'T USE THEM. These switches are documented
223
- further in the file wizard.txt.
224
-
225
-
226
- DJPEG DETAILS
227
-
228
- The basic command line switches for djpeg are:
229
-
230
- -colors N Reduce image to at most N colors. This reduces the
231
- or -quantize N number of colors used in the output image, so that it
232
- can be displayed on a colormapped display or stored in
233
- a colormapped file format. For example, if you have
234
- an 8-bit display, you'd need to reduce to 256 or fewer
235
- colors. (-colors is the recommended name, -quantize
236
- is provided only for backwards compatibility.)
237
-
238
- -fast Select recommended processing options for fast, low
239
- quality output. (The default options are chosen for
240
- highest quality output.) Currently, this is equivalent
241
- to "-dct fast -nosmooth -onepass -dither ordered".
242
-
243
- -grayscale Force gray-scale output even if JPEG file is color.
244
- Useful for viewing on monochrome displays; also,
245
- djpeg runs noticeably faster in this mode.
246
-
247
- -scale M/N Scale the output image by a factor M/N. Currently
248
- supported scale factors are M/8 with all M from 1 to
249
- 16. If the /N part is omitted, then M specifies the
250
- DCT scaled size to be applied on the given input,
251
- which is currently equivalent to M/8 scaling, since
252
- the source DCT size is currently always 8.
253
- Scaling is handy if the image is larger than your
254
- screen; also, djpeg runs much faster when scaling
255
- down the output.
256
-
257
- -bmp Select BMP output format (Windows flavor). 8-bit
258
- colormapped format is emitted if -colors or -grayscale
259
- is specified, or if the JPEG file is gray-scale;
260
- otherwise, 24-bit full-color format is emitted.
261
-
262
- -gif Select GIF output format. Since GIF does not support
263
- more than 256 colors, -colors 256 is assumed (unless
264
- you specify a smaller number of colors). If you
265
- specify -fast, the default number of colors is 216.
266
-
267
- -os2 Select BMP output format (OS/2 1.x flavor). 8-bit
268
- colormapped format is emitted if -colors or -grayscale
269
- is specified, or if the JPEG file is gray-scale;
270
- otherwise, 24-bit full-color format is emitted.
271
-
272
- -pnm Select PBMPLUS (PPM/PGM) output format (this is the
273
- default format). PGM is emitted if the JPEG file is
274
- gray-scale or if -grayscale is specified; otherwise
275
- PPM is emitted.
276
-
277
- -rle Select RLE output format. (Requires URT library.)
278
-
279
- -targa Select Targa output format. Gray-scale format is
280
- emitted if the JPEG file is gray-scale or if
281
- -grayscale is specified; otherwise, colormapped format
282
- is emitted if -colors is specified; otherwise, 24-bit
283
- full-color format is emitted.
284
-
285
- Switches for advanced users:
286
-
287
- -dct int Use integer DCT method (default).
288
- -dct fast Use fast integer DCT (less accurate).
289
- -dct float Use floating-point DCT method.
290
- The float method is very slightly more accurate than
291
- the int method, but is much slower unless your machine
292
- has very fast floating-point hardware. Also note that
293
- results of the floating-point method may vary slightly
294
- across machines, while the integer methods should give
295
- the same results everywhere. The fast integer method
296
- is much less accurate than the other two.
297
-
298
- -dither fs Use Floyd-Steinberg dithering in color quantization.
299
- -dither ordered Use ordered dithering in color quantization.
300
- -dither none Do not use dithering in color quantization.
301
- By default, Floyd-Steinberg dithering is applied when
302
- quantizing colors; this is slow but usually produces
303
- the best results. Ordered dither is a compromise
304
- between speed and quality; no dithering is fast but
305
- usually looks awful. Note that these switches have
306
- no effect unless color quantization is being done.
307
- Ordered dither is only available in -onepass mode.
308
-
309
- -map FILE Quantize to the colors used in the specified image
310
- file. This is useful for producing multiple files
311
- with identical color maps, or for forcing a predefined
312
- set of colors to be used. The FILE must be a GIF
313
- or PPM file. This option overrides -colors and
314
- -onepass.
315
-
316
- -nosmooth Don't use high-quality upsampling.
317
-
318
- -onepass Use one-pass instead of two-pass color quantization.
319
- The one-pass method is faster and needs less memory,
320
- but it produces a lower-quality image. -onepass is
321
- ignored unless you also say -colors N. Also,
322
- the one-pass method is always used for gray-scale
323
- output (the two-pass method is no improvement then).
324
-
325
- -maxmemory N Set limit for amount of memory to use in processing
326
- large images. Value is in thousands of bytes, or
327
- millions of bytes if "M" is attached to the number.
328
- For example, -max 4m selects 4000000 bytes. If more
329
- space is needed, temporary files will be used.
330
-
331
- -verbose Enable debug printout. More -v's give more printout.
332
- or -debug Also, version information is printed at startup.
333
-
334
-
335
- HINTS FOR CJPEG
336
-
337
- Color GIF files are not the ideal input for JPEG; JPEG is really intended for
338
- compressing full-color (24-bit) images. In particular, don't try to convert
339
- cartoons, line drawings, and other images that have only a few distinct
340
- colors. GIF works great on these, JPEG does not. If you want to convert a
341
- GIF to JPEG, you should experiment with cjpeg's -quality and -smooth options
342
- to get a satisfactory conversion. -smooth 10 or so is often helpful.
343
-
344
- Avoid running an image through a series of JPEG compression/decompression
345
- cycles. Image quality loss will accumulate; after ten or so cycles the image
346
- may be noticeably worse than it was after one cycle. It's best to use a
347
- lossless format while manipulating an image, then convert to JPEG format when
348
- you are ready to file the image away.
349
-
350
- The -optimize option to cjpeg is worth using when you are making a "final"
351
- version for posting or archiving. It's also a win when you are using low
352
- quality settings to make very small JPEG files; the percentage improvement
353
- is often a lot more than it is on larger files. (At present, -optimize
354
- mode is always selected when generating progressive JPEG files.)
355
-
356
- GIF input files are no longer supported, to avoid the Unisys LZW patent.
357
- (Conversion of GIF files to JPEG is usually a bad idea anyway.)
358
-
359
-
360
- HINTS FOR DJPEG
361
-
362
- To get a quick preview of an image, use the -grayscale and/or -scale switches.
363
- "-grayscale -scale 1/8" is the fastest case.
364
-
365
- Several options are available that trade off image quality to gain speed.
366
- "-fast" turns on the recommended settings.
367
-
368
- "-dct fast" and/or "-nosmooth" gain speed at a small sacrifice in quality.
369
- When producing a color-quantized image, "-onepass -dither ordered" is fast but
370
- much lower quality than the default behavior. "-dither none" may give
371
- acceptable results in two-pass mode, but is seldom tolerable in one-pass mode.
372
-
373
- If you are fortunate enough to have very fast floating point hardware,
374
- "-dct float" may be even faster than "-dct fast". But on most machines
375
- "-dct float" is slower than "-dct int"; in this case it is not worth using,
376
- because its theoretical accuracy advantage is too small to be significant
377
- in practice.
378
-
379
- Two-pass color quantization requires a good deal of memory; on MS-DOS machines
380
- it may run out of memory even with -maxmemory 0. In that case you can still
381
- decompress, with some loss of image quality, by specifying -onepass for
382
- one-pass quantization.
383
-
384
- To avoid the Unisys LZW patent, djpeg produces uncompressed GIF files. These
385
- are larger than they should be, but are readable by standard GIF decoders.
386
-
387
-
388
- HINTS FOR BOTH PROGRAMS
389
-
390
- If more space is needed than will fit in the available main memory (as
391
- determined by -maxmemory), temporary files will be used. (MS-DOS versions
392
- will try to get extended or expanded memory first.) The temporary files are
393
- often rather large: in typical cases they occupy three bytes per pixel, for
394
- example 3*800*600 = 1.44Mb for an 800x600 image. If you don't have enough
395
- free disk space, leave out -progressive and -optimize (for cjpeg) or specify
396
- -onepass (for djpeg).
397
-
398
- On MS-DOS, the temporary files are created in the directory named by the TMP
399
- or TEMP environment variable, or in the current directory if neither of those
400
- exist. Amiga implementations put the temp files in the directory named by
401
- JPEGTMP:, so be sure to assign JPEGTMP: to a disk partition with adequate free
402
- space.
403
-
404
- The default memory usage limit (-maxmemory) is set when the software is
405
- compiled. If you get an "insufficient memory" error, try specifying a smaller
406
- -maxmemory value, even -maxmemory 0 to use the absolute minimum space. You
407
- may want to recompile with a smaller default value if this happens often.
408
-
409
- On machines that have "environment" variables, you can define the environment
410
- variable JPEGMEM to set the default memory limit. The value is specified as
411
- described for the -maxmemory switch. JPEGMEM overrides the default value
412
- specified when the program was compiled, and itself is overridden by an
413
- explicit -maxmemory switch.
414
-
415
- On MS-DOS machines, -maxmemory is the amount of main (conventional) memory to
416
- use. (Extended or expanded memory is also used if available.) Most
417
- DOS-specific versions of this software do their own memory space estimation
418
- and do not need you to specify -maxmemory.
419
-
420
-
421
- JPEGTRAN
422
-
423
- jpegtran performs various useful transformations of JPEG files.
424
- It can translate the coded representation from one variant of JPEG to another,
425
- for example from baseline JPEG to progressive JPEG or vice versa. It can also
426
- perform some rearrangements of the image data, for example turning an image
427
- from landscape to portrait format by rotation.
428
-
429
- jpegtran works by rearranging the compressed data (DCT coefficients), without
430
- ever fully decoding the image. Therefore, its transformations are lossless:
431
- there is no image degradation at all, which would not be true if you used
432
- djpeg followed by cjpeg to accomplish the same conversion. But by the same
433
- token, jpegtran cannot perform lossy operations such as changing the image
434
- quality.
435
-
436
- jpegtran uses a command line syntax similar to cjpeg or djpeg.
437
- On Unix-like systems, you say:
438
- jpegtran [switches] [inputfile] >outputfile
439
- On most non-Unix systems, you say:
440
- jpegtran [switches] inputfile outputfile
441
- where both the input and output files are JPEG files.
442
-
443
- To specify the coded JPEG representation used in the output file,
444
- jpegtran accepts a subset of the switches recognized by cjpeg:
445
- -optimize Perform optimization of entropy encoding parameters.
446
- -progressive Create progressive JPEG file.
447
- -restart N Emit a JPEG restart marker every N MCU rows, or every
448
- N MCU blocks if "B" is attached to the number.
449
- -arithmetic Use arithmetic coding.
450
- -scans file Use the scan script given in the specified text file.
451
- See the previous discussion of cjpeg for more details about these switches.
452
- If you specify none of these switches, you get a plain baseline-JPEG output
453
- file. The quality setting and so forth are determined by the input file.
454
-
455
- The image can be losslessly transformed by giving one of these switches:
456
- -flip horizontal Mirror image horizontally (left-right).
457
- -flip vertical Mirror image vertically (top-bottom).
458
- -rotate 90 Rotate image 90 degrees clockwise.
459
- -rotate 180 Rotate image 180 degrees.
460
- -rotate 270 Rotate image 270 degrees clockwise (or 90 ccw).
461
- -transpose Transpose image (across UL-to-LR axis).
462
- -transverse Transverse transpose (across UR-to-LL axis).
463
-
464
- The transpose transformation has no restrictions regarding image dimensions.
465
- The other transformations operate rather oddly if the image dimensions are not
466
- a multiple of the iMCU size (usually 8 or 16 pixels), because they can only
467
- transform complete blocks of DCT coefficient data in the desired way.
468
-
469
- jpegtran's default behavior when transforming an odd-size image is designed
470
- to preserve exact reversibility and mathematical consistency of the
471
- transformation set. As stated, transpose is able to flip the entire image
472
- area. Horizontal mirroring leaves any partial iMCU column at the right edge
473
- untouched, but is able to flip all rows of the image. Similarly, vertical
474
- mirroring leaves any partial iMCU row at the bottom edge untouched, but is
475
- able to flip all columns. The other transforms can be built up as sequences
476
- of transpose and flip operations; for consistency, their actions on edge
477
- pixels are defined to be the same as the end result of the corresponding
478
- transpose-and-flip sequence.
479
-
480
- For practical use, you may prefer to discard any untransformable edge pixels
481
- rather than having a strange-looking strip along the right and/or bottom edges
482
- of a transformed image. To do this, add the -trim switch:
483
- -trim Drop non-transformable edge blocks.
484
- Obviously, a transformation with -trim is not reversible, so strictly speaking
485
- jpegtran with this switch is not lossless. Also, the expected mathematical
486
- equivalences between the transformations no longer hold. For example,
487
- "-rot 270 -trim" trims only the bottom edge, but "-rot 90 -trim" followed by
488
- "-rot 180 -trim" trims both edges.
489
-
490
- If you are only interested in perfect transformation, add the -perfect switch:
491
- -perfect Fails with an error if the transformation is not
492
- perfect.
493
- For example you may want to do
494
- jpegtran -rot 90 -perfect foo.jpg || djpeg foo.jpg | pnmflip -r90 | cjpeg
495
- to do a perfect rotation if available or an approximated one if not.
496
-
497
- We also offer a lossless-crop option, which discards data outside a given
498
- image region but losslessly preserves what is inside. Like the rotate and
499
- flip transforms, lossless crop is restricted by the current JPEG format: the
500
- upper left corner of the selected region must fall on an iMCU boundary. If
501
- this does not hold for the given crop parameters, we silently move the upper
502
- left corner up and/or left to make it so, simultaneously increasing the region
503
- dimensions to keep the lower right crop corner unchanged. (Thus, the output
504
- image covers at least the requested region, but may cover more.)
505
-
506
- The image can be losslessly cropped by giving the switch:
507
- -crop WxH+X+Y Crop to a rectangular subarea of width W, height H
508
- starting at point X,Y.
509
-
510
- Another not-strictly-lossless transformation switch is:
511
- -grayscale Force grayscale output.
512
- This option discards the chrominance channels if the input image is YCbCr
513
- (ie, a standard color JPEG), resulting in a grayscale JPEG file. The
514
- luminance channel is preserved exactly, so this is a better method of reducing
515
- to grayscale than decompression, conversion, and recompression. This switch
516
- is particularly handy for fixing a monochrome picture that was mistakenly
517
- encoded as a color JPEG. (In such a case, the space savings from getting rid
518
- of the near-empty chroma channels won't be large; but the decoding time for
519
- a grayscale JPEG is substantially less than that for a color JPEG.)
520
-
521
- jpegtran also recognizes these switches that control what to do with "extra"
522
- markers, such as comment blocks:
523
- -copy none Copy no extra markers from source file. This setting
524
- suppresses all comments and other excess baggage
525
- present in the source file.
526
- -copy comments Copy only comment markers. This setting copies
527
- comments from the source file, but discards
528
- any other inessential (for image display) data.
529
- -copy all Copy all extra markers. This setting preserves
530
- miscellaneous markers found in the source file, such
531
- as JFIF thumbnails, Exif data, and Photoshop settings.
532
- In some files these extra markers can be sizable.
533
- The default behavior is -copy comments. (Note: in IJG releases v6 and v6a,
534
- jpegtran always did the equivalent of -copy none.)
535
-
536
- Additional switches recognized by jpegtran are:
537
- -outfile filename
538
- -maxmemory N
539
- -verbose
540
- -debug
541
- These work the same as in cjpeg or djpeg.
542
-
543
-
544
- THE COMMENT UTILITIES
545
-
546
- The JPEG standard allows "comment" (COM) blocks to occur within a JPEG file.
547
- Although the standard doesn't actually define what COM blocks are for, they
548
- are widely used to hold user-supplied text strings. This lets you add
549
- annotations, titles, index terms, etc to your JPEG files, and later retrieve
550
- them as text. COM blocks do not interfere with the image stored in the JPEG
551
- file. The maximum size of a COM block is 64K, but you can have as many of
552
- them as you like in one JPEG file.
553
-
554
- We provide two utility programs to display COM block contents and add COM
555
- blocks to a JPEG file.
556
-
557
- rdjpgcom searches a JPEG file and prints the contents of any COM blocks on
558
- standard output. The command line syntax is
559
- rdjpgcom [-raw] [-verbose] [inputfilename]
560
- The switch "-raw" (or just "-r") causes rdjpgcom to also output non-printable
561
- characters in comments, which are normally escaped for security reasons.
562
- The switch "-verbose" (or just "-v") causes rdjpgcom to also display the JPEG
563
- image dimensions. If you omit the input file name from the command line,
564
- the JPEG file is read from standard input. (This may not work on some
565
- operating systems, if binary data can't be read from stdin.)
566
-
567
- wrjpgcom adds a COM block, containing text you provide, to a JPEG file.
568
- Ordinarily, the COM block is added after any existing COM blocks, but you
569
- can delete the old COM blocks if you wish. wrjpgcom produces a new JPEG
570
- file; it does not modify the input file. DO NOT try to overwrite the input
571
- file by directing wrjpgcom's output back into it; on most systems this will
572
- just destroy your file.
573
-
574
- The command line syntax for wrjpgcom is similar to cjpeg's. On Unix-like
575
- systems, it is
576
- wrjpgcom [switches] [inputfilename]
577
- The output file is written to standard output. The input file comes from
578
- the named file, or from standard input if no input file is named.
579
-
580
- On most non-Unix systems, the syntax is
581
- wrjpgcom [switches] inputfilename outputfilename
582
- where both input and output file names must be given explicitly.
583
-
584
- wrjpgcom understands three switches:
585
- -replace Delete any existing COM blocks from the file.
586
- -comment "Comment text" Supply new COM text on command line.
587
- -cfile name Read text for new COM block from named file.
588
- (Switch names can be abbreviated.) If you have only one line of comment text
589
- to add, you can provide it on the command line with -comment. The comment
590
- text must be surrounded with quotes so that it is treated as a single
591
- argument. Longer comments can be read from a text file.
592
-
593
- If you give neither -comment nor -cfile, then wrjpgcom will read the comment
594
- text from standard input. (In this case an input image file name MUST be
595
- supplied, so that the source JPEG file comes from somewhere else.) You can
596
- enter multiple lines, up to 64KB worth. Type an end-of-file indicator
597
- (usually control-D or control-Z) to terminate the comment text entry.
598
-
599
- wrjpgcom will not add a COM block if the provided comment string is empty.
600
- Therefore -replace -comment "" can be used to delete all COM blocks from a
601
- file.
602
-
603
- These utility programs do not depend on the IJG JPEG library. In
604
- particular, the source code for rdjpgcom is intended as an illustration of
605
- the minimum amount of code required to parse a JPEG file header correctly.