亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jpegtran.c

?? About JPEG, executable on Visual C++
?? C
字號(hào):
////////////////////////////////////////////////////////////////////////
//
//	Note : this file is included as part of the Smaller Animals Software
//	JpegFile package. Though this file has not been modified from it's 
//	original IJG 6a form, it is not the responsibility on the Independent
//	JPEG Group to answer questions regarding this code.
//	
//	Any questions you have about this code should be addressed to :
//
//	CHRISDL@PAGESZ.NET	- the distributor of this package.
//
//	Remember, by including this code in the JpegFile package, Smaller 
//	Animals Software assumes all responsibilities for answering questions
//	about it. If we (SA Software) can't answer your questions ourselves, we 
//	will direct you to people who can.
//
//	Thanks, CDL.
//
////////////////////////////////////////////////////////////////////////
/*
 * jpegtran.c
 *
 * Copyright (C) 1995-1996, Thomas G. Lane.
 * This file is part of the Independent JPEG Group's software.
 * For conditions of distribution and use, see the accompanying README file.
 *
 * This file contains a command-line user interface for JPEG transcoding.
 * It is very similar to cjpeg.c, but provides lossless transcoding between
 * different JPEG file formats.
 */

#include "cdjpeg.h"		/* Common decls for cjpeg/djpeg applications */
#include "jversion.h"		/* for version message */

#ifdef USE_CCOMMAND		/* command-line reader for Macintosh */
#ifdef __MWERKS__
#include <SIOUX.h>              /* Metrowerks needs this */
#include <console.h>		/* ... and this */
#endif
#ifdef THINK_C
#include <console.h>		/* Think declares it here */
#endif
#endif


/*
 * Argument-parsing code.
 * The switch parser is designed to be useful with DOS-style command line
 * syntax, ie, intermixed switches and file names, where only the switches
 * to the left of a given file name affect processing of that file.
 * The main program in this file doesn't actually use this capability...
 */


static const char * progname;	/* program name for error messages */
static char * outfilename;	/* for -outfile switch */


LOCAL(void)
usage (void)
/* complain about bad command line */
{
  fprintf(stderr, "usage: %s [switches] ", progname);
#ifdef TWO_FILE_COMMANDLINE
  fprintf(stderr, "inputfile outputfile\n");
#else
  fprintf(stderr, "[inputfile]\n");
#endif

  fprintf(stderr, "Switches (names may be abbreviated):\n");
#ifdef ENTROPY_OPT_SUPPORTED
  fprintf(stderr, "  -optimize      Optimize Huffman table (smaller file, but slow compression)\n");
#endif
#ifdef C_PROGRESSIVE_SUPPORTED
  fprintf(stderr, "  -progressive   Create progressive JPEG file\n");
#endif
  fprintf(stderr, "Switches for advanced users:\n");
  fprintf(stderr, "  -restart N     Set restart interval in rows, or in blocks with B\n");
  fprintf(stderr, "  -maxmemory N   Maximum memory to use (in kbytes)\n");
  fprintf(stderr, "  -outfile name  Specify name for output file\n");
  fprintf(stderr, "  -verbose  or  -debug   Emit debug output\n");
  fprintf(stderr, "Switches for wizards:\n");
#ifdef C_ARITH_CODING_SUPPORTED
  fprintf(stderr, "  -arithmetic    Use arithmetic coding\n");
#endif
#ifdef C_MULTISCAN_FILES_SUPPORTED
  fprintf(stderr, "  -scans file    Create multi-scan JPEG per script file\n");
#endif
  exit(EXIT_FAILURE);
}


LOCAL(int)
parse_switches (j_compress_ptr cinfo, int argc, char **argv,
		int last_file_arg_seen, boolean for_real)
/* Parse optional switches.
 * Returns argv[] index of first file-name argument (== argc if none).
 * Any file names with indexes <= last_file_arg_seen are ignored;
 * they have presumably been processed in a previous iteration.
 * (Pass 0 for last_file_arg_seen on the first or only iteration.)
 * for_real is FALSE on the first (dummy) pass; we may skip any expensive
 * processing.
 */
{
  int argn;
  char * arg;
  boolean simple_progressive;
  char * scansarg = NULL;	/* saves -scans parm if any */

  /* Set up default JPEG parameters. */
  simple_progressive = FALSE;
  outfilename = NULL;
  cinfo->err->trace_level = 0;

  /* Scan command line options, adjust parameters */

  for (argn = 1; argn < argc; argn++) {
    arg = argv[argn];
    if (*arg != '-') {
      /* Not a switch, must be a file name argument */
      if (argn <= last_file_arg_seen) {
	outfilename = NULL;	/* -outfile applies to just one input file */
	continue;		/* ignore this name if previously processed */
      }
      break;			/* else done parsing switches */
    }
    arg++;			/* advance past switch marker character */

    if (keymatch(arg, "arithmetic", 1)) {
      /* Use arithmetic coding. */
#ifdef C_ARITH_CODING_SUPPORTED
      cinfo->arith_code = TRUE;
#else
      fprintf(stderr, "%s: sorry, arithmetic coding not supported\n",
	      progname);
      exit(EXIT_FAILURE);
#endif

    } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
      /* Enable debug printouts. */
      /* On first -d, print version identification */
      static boolean printed_version = FALSE;

      if (! printed_version) {
	fprintf(stderr, "Independent JPEG Group's JPEGTRAN, version %s\n%s\n",
		JVERSION, JCOPYRIGHT);
	printed_version = TRUE;
      }
      cinfo->err->trace_level++;

    } else if (keymatch(arg, "maxmemory", 3)) {
      /* Maximum memory in Kb (or Mb with 'm'). */
      long lval;
      char ch = 'x';

      if (++argn >= argc)	/* advance to next argument */
	usage();
      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
	usage();
      if (ch == 'm' || ch == 'M')
	lval *= 1000L;
      cinfo->mem->max_memory_to_use = lval * 1000L;

    } else if (keymatch(arg, "optimize", 1) || keymatch(arg, "optimise", 1)) {
      /* Enable entropy parm optimization. */
#ifdef ENTROPY_OPT_SUPPORTED
      cinfo->optimize_coding = TRUE;
#else
      fprintf(stderr, "%s: sorry, entropy optimization was not compiled\n",
	      progname);
      exit(EXIT_FAILURE);
#endif

    } else if (keymatch(arg, "outfile", 4)) {
      /* Set output file name. */
      if (++argn >= argc)	/* advance to next argument */
	usage();
      outfilename = argv[argn];	/* save it away for later use */

    } else if (keymatch(arg, "progressive", 1)) {
      /* Select simple progressive mode. */
#ifdef C_PROGRESSIVE_SUPPORTED
      simple_progressive = TRUE;
      /* We must postpone execution until num_components is known. */
#else
      fprintf(stderr, "%s: sorry, progressive output was not compiled\n",
	      progname);
      exit(EXIT_FAILURE);
#endif

    } else if (keymatch(arg, "restart", 1)) {
      /* Restart interval in MCU rows (or in MCUs with 'b'). */
      long lval;
      char ch = 'x';

      if (++argn >= argc)	/* advance to next argument */
	usage();
      if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
	usage();
      if (lval < 0 || lval > 65535L)
	usage();
      if (ch == 'b' || ch == 'B') {
	cinfo->restart_interval = (unsigned int) lval;
	cinfo->restart_in_rows = 0; /* else prior '-restart n' overrides me */
      } else {
	cinfo->restart_in_rows = (int) lval;
	/* restart_interval will be computed during startup */
      }

    } else if (keymatch(arg, "scans", 2)) {
      /* Set scan script. */
#ifdef C_MULTISCAN_FILES_SUPPORTED
      if (++argn >= argc)	/* advance to next argument */
	usage();
      scansarg = argv[argn];
      /* We must postpone reading the file in case -progressive appears. */
#else
      fprintf(stderr, "%s: sorry, multi-scan output was not compiled\n",
	      progname);
      exit(EXIT_FAILURE);
#endif

    } else {
      usage();			/* bogus switch */
    }
  }

  /* Post-switch-scanning cleanup */

  if (for_real) {

#ifdef C_PROGRESSIVE_SUPPORTED
    if (simple_progressive)	/* process -progressive; -scans can override */
      jpeg_simple_progression(cinfo);
#endif

#ifdef C_MULTISCAN_FILES_SUPPORTED
    if (scansarg != NULL)	/* process -scans if it was present */
      if (! read_scan_script(cinfo, scansarg))
	usage();
#endif
  }

  return argn;			/* return index of next arg (file name) */
}


/*
 * The main program.
 */

int
main (int argc, char **argv)
{
  struct jpeg_decompress_struct srcinfo;
  struct jpeg_compress_struct dstinfo;
  struct jpeg_error_mgr jsrcerr, jdsterr;
#ifdef PROGRESS_REPORT
  struct cdjpeg_progress_mgr progress;
#endif
  jvirt_barray_ptr * coef_arrays;
  int file_index;
  FILE * input_file;
  FILE * output_file;

  /* On Mac, fetch a command line. */
#ifdef USE_CCOMMAND
  argc = ccommand(&argv);
#endif

  progname = argv[0];
  if (progname == NULL || progname[0] == 0)
    progname = "jpegtran";	/* in case C library doesn't provide it */

  /* Initialize the JPEG decompression object with default error handling. */
  srcinfo.err = jpeg_std_error(&jsrcerr);
  jpeg_create_decompress(&srcinfo);
  /* Initialize the JPEG compression object with default error handling. */
  dstinfo.err = jpeg_std_error(&jdsterr);
  jpeg_create_compress(&dstinfo);

  /* Now safe to enable signal catcher.
   * Note: we assume only the decompression object will have virtual arrays.
   */
#ifdef NEED_SIGNAL_CATCHER
  enable_signal_catcher((j_common_ptr) &srcinfo);
#endif

  /* Scan command line to find file names.
   * It is convenient to use just one switch-parsing routine, but the switch
   * values read here are ignored; we will rescan the switches after opening
   * the input file.
   */

  file_index = parse_switches(&dstinfo, argc, argv, 0, FALSE);
  jsrcerr.trace_level = jdsterr.trace_level;
  srcinfo.mem->max_memory_to_use = dstinfo.mem->max_memory_to_use;

#ifdef TWO_FILE_COMMANDLINE
  /* Must have either -outfile switch or explicit output file name */
  if (outfilename == NULL) {
    if (file_index != argc-2) {
      fprintf(stderr, "%s: must name one input and one output file\n",
	      progname);
      usage();
    }
    outfilename = argv[file_index+1];
  } else {
    if (file_index != argc-1) {
      fprintf(stderr, "%s: must name one input and one output file\n",
	      progname);
      usage();
    }
  }
#else
  /* Unix style: expect zero or one file name */
  if (file_index < argc-1) {
    fprintf(stderr, "%s: only one input file\n", progname);
    usage();
  }
#endif /* TWO_FILE_COMMANDLINE */

  /* Open the input file. */
  if (file_index < argc) {
    if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
      fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
      exit(EXIT_FAILURE);
    }
  } else {
    /* default input file is stdin */
    input_file = read_stdin();
  }

  /* Open the output file. */
  if (outfilename != NULL) {
    if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
      fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
      exit(EXIT_FAILURE);
    }
  } else {
    /* default output file is stdout */
    output_file = write_stdout();
  }

#ifdef PROGRESS_REPORT
  start_progress_monitor((j_common_ptr) &dstinfo, &progress);
#endif

  /* Specify data source for decompression */
  jpeg_stdio_src(&srcinfo, input_file);

  /* Read file header */
  (void) jpeg_read_header(&srcinfo, TRUE);

  /* Read source file as DCT coefficients */
  coef_arrays = jpeg_read_coefficients(&srcinfo);

  /* Initialize destination compression parameters from source values */
  jpeg_copy_critical_parameters(&srcinfo, &dstinfo);

  /* Adjust default compression parameters by re-parsing the options */
  file_index = parse_switches(&dstinfo, argc, argv, 0, TRUE);

  /* Specify data destination for compression */
  jpeg_stdio_dest(&dstinfo, output_file);

  /* Start compressor */
  jpeg_write_coefficients(&dstinfo, coef_arrays);

  /* ought to copy source comments here... */

  /* Finish compression and release memory */
  jpeg_finish_compress(&dstinfo);
  jpeg_destroy_compress(&dstinfo);
  (void) jpeg_finish_decompress(&srcinfo);
  jpeg_destroy_decompress(&srcinfo);

  /* Close files, if we opened them */
  if (input_file != stdin)
    fclose(input_file);
  if (output_file != stdout)
    fclose(output_file);

#ifdef PROGRESS_REPORT
  end_progress_monitor((j_common_ptr) &dstinfo);
#endif

  /* All done. */
  exit(jsrcerr.num_warnings + jdsterr.num_warnings ?EXIT_WARNING:EXIT_SUCCESS);
  return 0;			/* suppress no-return-value warnings */
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产露脸精彩对白| 成人免费高清视频| 欧美一级欧美一级在线播放| 视频在线观看91| 91精品国产欧美一区二区18| 日韩高清中文字幕一区| 欧美tk丨vk视频| 高清shemale亚洲人妖| 亚洲婷婷国产精品电影人久久| 91蜜桃网址入口| 波多野洁衣一区| 亚洲一区二区四区蜜桃| 欧美剧在线免费观看网站| 美女免费视频一区二区| 久久久久久久久蜜桃| 91亚洲国产成人精品一区二三| 亚洲一区二区三区国产| 91精品国产91久久久久久最新毛片| 美女免费视频一区二区| 中文字幕视频一区二区三区久| 精品视频免费在线| 国产一区二区在线电影| 亚洲另类春色校园小说| 欧美精品v国产精品v日韩精品| 精品一区二区三区日韩| 亚洲美女区一区| 日韩精品一区二区三区老鸭窝| 99久久亚洲一区二区三区青草| 丝袜a∨在线一区二区三区不卡| 精品国产一区二区在线观看| 一本到不卡免费一区二区| 日本不卡高清视频| 亚洲欧洲99久久| 欧美一级艳片视频免费观看| 99免费精品视频| 久久99久久久久久久久久久| 中文字幕一区日韩精品欧美| 日韩一区二区三区电影在线观看 | 国产午夜精品久久久久久久| 色菇凉天天综合网| 国产乱对白刺激视频不卡| 亚洲综合无码一区二区| 国产欧美日韩视频一区二区| 欧美日韩成人一区| 91麻豆国产精品久久| 黄色成人免费在线| 五月天视频一区| 亚洲三级在线观看| 久久久.com| 欧美电视剧在线观看完整版| 欧美在线一二三四区| 成人性色生活片| 久久国产视频网| 亚洲妇女屁股眼交7| 国产精品国产三级国产普通话99| 日韩一区二区三区av| 在线视频欧美精品| 99在线视频精品| 国产91在线观看| 激情久久五月天| 美国三级日本三级久久99| 亚洲成人你懂的| 亚洲午夜私人影院| 亚洲国产cao| 午夜精品在线视频一区| 亚洲精品国产成人久久av盗摄| 亚洲国产高清aⅴ视频| 久久精品在线观看| 久久亚洲一级片| 久久久久亚洲蜜桃| 久久久高清一区二区三区| 精品乱人伦一区二区三区| 日韩精品在线一区二区| 欧美变态tickling挠脚心| 日韩视频免费观看高清在线视频| 欧美一区二区三区免费在线看| 7777精品伊人久久久大香线蕉的 | 欧美日韩aaa| 欧美日本乱大交xxxxx| 欧美日韩精品久久久| 欧美一区午夜精品| 日韩免费高清视频| 精品成人一区二区三区四区| 精品久久人人做人人爰| 久久久精品综合| 成人欧美一区二区三区视频网页| 亚洲青青青在线视频| 自拍偷拍欧美激情| 一区二区三区免费| 午夜日韩在线观看| 狠狠色丁香久久婷婷综合_中| 国产一区二区主播在线| 国产精品一区久久久久| eeuss影院一区二区三区| www.欧美色图| 欧美视频完全免费看| 欧美日本国产一区| 欧美一区二区成人| 国产女人aaa级久久久级| 亚洲黄网站在线观看| 天涯成人国产亚洲精品一区av| 青青草原综合久久大伊人精品 | 一级日本不卡的影视| 丝袜亚洲另类欧美| 国产一区二区不卡在线| 国产+成+人+亚洲欧洲自线| 97久久精品人人做人人爽| 欧美日韩国产免费一区二区| 精品国产一区二区三区av性色| 国产亚洲精品bt天堂精选| 亚洲欧洲综合另类| 免费国产亚洲视频| a在线播放不卡| 欧美精品乱码久久久久久 | 成人av在线一区二区三区| 日本丰满少妇一区二区三区| 日韩一级成人av| 自拍av一区二区三区| 蜜芽一区二区三区| 97久久超碰国产精品| 精品国产青草久久久久福利| 国产精品久久三区| 另类小说欧美激情| 91美女片黄在线| 久久先锋影音av鲁色资源网| 亚洲自拍偷拍欧美| 国产91精品精华液一区二区三区 | 精品sm捆绑视频| 亚洲精品国产精华液| 国产91色综合久久免费分享| 欧美伦理电影网| 亚洲图片另类小说| 国产一区二区在线观看免费 | 国产黄色精品视频| 欧美日韩一区二区三区视频| 国产欧美精品一区| 久久99精品视频| 欧美日韩在线精品一区二区三区激情| 久久免费午夜影院| 蜜臀av一区二区| 欧美午夜片在线看| 亚洲视频狠狠干| 国产mv日韩mv欧美| 亚洲精品一区二区三区四区高清| 亚洲激情图片一区| www.日韩大片| 欧美极品aⅴ影院| 国产麻豆精品久久一二三| 欧美一卡在线观看| 亚洲午夜精品网| 欧美日韩中文字幕一区| 亚洲色图欧美偷拍| 白白色亚洲国产精品| 国产精品久久三| 国产福利91精品| 国产欧美一区二区精品性色| 精品一区二区三区的国产在线播放 | 欧美一区二区三区成人| 亚洲va在线va天堂| 欧美午夜影院一区| 亚洲v日本v欧美v久久精品| 欧美网站一区二区| 三级影片在线观看欧美日韩一区二区 | 久久精品国产一区二区| 欧美精品v国产精品v日韩精品| 偷拍日韩校园综合在线| 欧美日韩精品系列| 婷婷综合在线观看| 在线不卡中文字幕播放| 日韩福利电影在线| 日韩免费看的电影| 国内精品视频666| 久久精品一级爱片| 成人理论电影网| 亚洲女性喷水在线观看一区| 色婷婷av一区二区| 午夜久久久久久久久| 日韩一区二区三区免费观看| 国产在线精品一区二区三区不卡 | 欧美日韩国产在线播放网站| 日韩精品免费专区| 日韩视频免费观看高清完整版在线观看| 蜜桃av一区二区在线观看| 精品国产3级a| 风间由美一区二区av101| 中文字幕一区在线观看| 欧美视频一区二区在线观看| 日本美女一区二区三区| 久久综合九色欧美综合狠狠| 高清视频一区二区| 亚洲午夜精品在线| 欧美大片在线观看| 99视频超级精品| 热久久一区二区| 国产视频一区二区在线观看| 色国产综合视频| 国产一区不卡精品| 亚洲精品国产视频| 欧美一级理论性理论a| 成人久久18免费网站麻豆|