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

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

?? example.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號(hào):
Unit example;

{ This file illustrates how to use the IJG code as a subroutine library
  to read or write JPEG image files.  You should look at this code in
  conjunction with the documentation file libjpeg.doc.

  This code will not do anything useful as-is, but it may be helpful as a
  skeleton for constructing routines that call the JPEG library. }

{ Original: example.c }

Interface

{ Include file for users of JPEG library.
  You will need to have included system headers that define at least
  the typedefs FILE and size_t before you can include jpeglib.h.
  (stdio.h is sufficient on ANSI-conforming systems.)
  You may also wish to include "jerror.h". }

uses
  jmorecfg, jerror, jpeglib,
  jdatadst, jcparam, jcapimin, jcapistd, jdapimin, jdatasrc, jdapistd,
  test;


{ Sample routine for JPEG compression.  We assume that the target file name
  and a compression quality factor are passed in. }

{GLOBAL}
procedure write_JPEG_file (filename : string; quality : int);

{ Sample routine for JPEG decompression.  We assume that the source file name
  is passed in.  We want to return TRUE on success, FALSE on error. }

{GLOBAL}
function read_JPEG_file (filename : string) : boolean;

implementation

{$IFOPT I+} {$DEFINE IoCheck} {$ENDIF}

{ <setjmp.h> is used for the optional error recovery mechanism shown in
  the second part of the example. }


{******************* JPEG COMPRESSION SAMPLE INTERFACE ******************}

{ This half of the example shows how to feed data into the JPEG compressor.
  We present a minimal version that does not worry about refinements such
  as error recovery (the JPEG code will just exit() if it gets an error). }


{ IMAGE DATA FORMATS:

  The standard input image format is a rectangular array of pixels, with
  each pixel having the same number of "component" values (color channels).
  Each pixel row is an array of JSAMPLEs (which typically are unsigned chars).
  If you are working with color data, then the color values for each pixel
  must be adjacent in the row; for example, R,G,B,R,G,B,R,G,B,... for 24-bit
  RGB color.

  For this example, we'll assume that this data structure matches the way
  our application has stored the image in memory, so we can just pass a
  pointer to our image buffer.  In particular, let's say that the image is
  RGB color and is described by: }

{$IFDEF TEST}
{extern}
var
  image_buffer : JSAMPROW;	{ Points to large array of R,G,B-order data }
  image_height : int;	        { Number of rows in image }
  image_width : int;		{ Number of columns in image }

{$ENDIF}

{ Sample routine for JPEG compression.  We assume that the target file name
  and a compression quality factor are passed in. }

{GLOBAL}
procedure write_JPEG_file (filename : string;  quality : int);
var
  { This struct contains the JPEG compression parameters and pointers to
    working space (which is allocated as needed by the JPEG library).
    It is possible to have several such structures, representing multiple
    compression/decompression processes, in existence at once.  We refer
    to any one struct (and its associated working data) as a "JPEG object". }
  cinfo : jpeg_compress_struct;
  { This struct represents a JPEG error handler.  It is declared separately
    because applications often want to supply a specialized error handler
    (see the second half of this file for an example).  But here we just
    take the easy way out and use the standard error handler, which will
    print a message on stderr and call exit() if compression fails.
    Note that this struct must live as long as the main JPEG parameter
    struct, to avoid dangling-pointer problems. }

  jerr : jpeg_error_mgr;
  { More stuff }
  outfile : FILE;		{ target file }
  row_pointer : array[0..0] of JSAMPROW ;	{ pointer to JSAMPLE row[s] }
  row_stride : int;		{ physical row width in image buffer }
begin
  { Step 1: allocate and initialize JPEG compression object }

  { We have to set up the error handler first, in case the initialization
    step fails.  (Unlikely, but it could happen if you are out of memory.)
    This routine fills in the contents of struct jerr, and returns jerr's
    address which we place into the link field in cinfo. }

  cinfo.err := jpeg_std_error(jerr);
  { msg_level that will be displayed. (Nomssi) }
  jerr.trace_level := 3;
  { Now we can initialize the JPEG compression object. }
  jpeg_create_compress(@cinfo);

  { Step 2: specify data destination (eg, a file) }
  { Note: steps 2 and 3 can be done in either order. }

  { Here we use the library-supplied code to send compressed data to a
    stdio stream.  You can also write your own code to do something else.
    VERY IMPORTANT: use "b" option to fopen() if you are on a machine that
    requires it in order to write binary files. }

  Assign(outfile, filename);
  {$I-}
  ReWrite(outfile, 1);
  {$IFDEF IoCheck} {$I+} {$ENDIF}
  if (IOresult <> 0) then
  begin
    WriteLn(output, 'can''t open ', filename);
    Halt(1);
  end;
  jpeg_stdio_dest(@cinfo, @outfile);

  { Step 3: set parameters for compression }

  { First we supply a description of the input image.
    Four fields of the cinfo struct must be filled in: }

  cinfo.image_width := image_width; 	{ image width and height, in pixels }
  cinfo.image_height := image_height;
  cinfo.input_components := 3;		{ # of color components per pixel }
  cinfo.in_color_space := JCS_RGB; 	{ colorspace of input image }
  { Now use the library's routine to set default compression parameters.
    (You must set at least cinfo.in_color_space before calling this,
    since the defaults depend on the source color space.) }

  jpeg_set_defaults(@cinfo);
  { Now you can set any non-default parameters you wish to.
    Here we just illustrate the use of quality (quantization table) scaling: }

  jpeg_set_quality(@cinfo, quality, TRUE { limit to baseline-JPEG values });

  { Step 4: Start compressor }

  { TRUE ensures that we will write a complete interchange-JPEG file.
    Pass TRUE unless you are very sure of what you're doing. }

  jpeg_start_compress(@cinfo, TRUE);

  { Step 5: while (scan lines remain to be written) }
  {           jpeg_write_scanlines(...); }

  { Here we use the library's state variable cinfo.next_scanline as the
    loop counter, so that we don't have to keep track ourselves.
    To keep things simple, we pass one scanline per call; you can pass
    more if you wish, though. }

  row_stride := image_width * 3;	{ JSAMPLEs per row in image_buffer }

  while (cinfo.next_scanline < cinfo.image_height) do
  begin
    { jpeg_write_scanlines expects an array of pointers to scanlines.
      Here the array is only one element long, but you could pass
      more than one scanline at a time if that's more convenient. }

    row_pointer[0] := JSAMPROW(@image_buffer^[cinfo.next_scanline * row_stride]);
    {void} jpeg_write_scanlines(@cinfo, JSAMPARRAY(@row_pointer), 1);
  end;

  { Step 6: Finish compression }

  jpeg_finish_compress(@cinfo);
  { After finish_compress, we can close the output file. }
  system.close(outfile);

  { Step 7: release JPEG compression object }

  { This is an important step since it will release a good deal of memory. }
  jpeg_destroy_compress(@cinfo);

  { And we're done! }
end;


{ SOME FINE POINTS:

  In the above loop, we ignored the return value of jpeg_write_scanlines,
  which is the number of scanlines actually written.  We could get away
  with this because we were only relying on the value of cinfo.next_scanline,
  which will be incremented correctly.  If you maintain additional loop
  variables then you should be careful to increment them properly.
  Actually, for output to a stdio stream you needn't worry, because
  then jpeg_write_scanlines will write all the lines passed (or else exit
  with a fatal error).  Partial writes can only occur if you use a data
  destination module that can demand suspension of the compressor.
  (If you don't know what that's for, you don't need it.)

  If the compressor requires full-image buffers (for entropy-coding
  optimization or a multi-scan JPEG file), it will create temporary
  files for anything that doesn't fit within the maximum-memory setting.
  (Note that temp files are NOT needed if you use the default parameters.)
  On some systems you may need to set up a signal handler to ensure that
  temporary files are deleted if the program is interrupted.  See libjpeg.doc.

  Scanlines MUST be supplied in top-to-bottom order if you want your JPEG
  files to be compatible with everyone else's.  If you cannot readily read
  your data in that order, you'll need an intermediate array to hold the
  image.  See rdtarga.c or rdbmp.c for examples of handling bottom-to-top
  source data using the JPEG code's internal virtual-array mechanisms. }




{******************* JPEG DECOMPRESSION SAMPLE INTERFACE ******************}

{ This half of the example shows how to read data from the JPEG decompressor.
  It's a bit more refined than the above, in that we show:
    (a) how to modify the JPEG library's standard error-reporting behavior;
    (b) how to allocate workspace using the library's memory manager.

  Just to make this example a little different from the first one, we'll
  assume that we do not intend to put the whole image into an in-memory
  buffer, but to send it line-by-line someplace else.  We need a one-
  scanline-high JSAMPLE array as a work buffer, and we will let the JPEG
  memory manager allocate it for us.  This approach is actually quite useful
  because we don't need to remember to deallocate the buffer separately: it
  will go away automatically when the JPEG object is cleaned up. }


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
972aa.com艺术欧美| 懂色av噜噜一区二区三区av| 黄页视频在线91| 国产亚洲女人久久久久毛片| 成人免费的视频| 亚欧色一区w666天堂| 欧美成人一区二区三区| 国产美女娇喘av呻吟久久| 中文字幕综合网| 日韩亚洲欧美在线| 97se狠狠狠综合亚洲狠狠| 丝袜诱惑制服诱惑色一区在线观看| 日韩精品最新网址| 色综合天天综合网国产成人综合天 | 精品成人私密视频| 91一区二区三区在线播放| 精品一区精品二区高清| 一区二区三区四区激情| 欧美激情综合网| 91麻豆精品国产91久久久久久久久 | 久久综合丝袜日本网| 北条麻妃一区二区三区| 午夜精品一区二区三区免费视频| 欧美欧美欧美欧美| 91香蕉视频在线| 亚洲一区视频在线观看视频| 欧美精品三级日韩久久| 成人免费视频播放| 国产米奇在线777精品观看| 艳妇臀荡乳欲伦亚洲一区| 国产视频一区二区在线| 91麻豆精品国产91久久久| 9i在线看片成人免费| 亚洲h动漫在线| 日韩国产成人精品| 激情国产一区二区| 亚洲最色的网站| 欧美videossexotv100| 成人免费高清在线| 一区二区三区精品视频| 欧美一区二区三区啪啪| 韩国精品免费视频| 亚洲激情一二三区| 国产精品久久午夜| 日韩一级免费一区| 欧美精选在线播放| 欧美三级中文字| 欧美三日本三级三级在线播放| 国内精品免费在线观看| 久久不见久久见免费视频7| 亚洲一区中文日韩| 亚洲黄色小说网站| 亚洲一区在线视频观看| 亚洲理论在线观看| 婷婷六月综合网| 免费美女久久99| 成人综合婷婷国产精品久久免费| 亚洲一区二区黄色| 另类调教123区| 91丨porny丨户外露出| 欧美日韩国产在线播放网站| 欧美精品一区二区蜜臀亚洲| 国产精品二三区| 国产无人区一区二区三区| 中文字幕一区二区三区视频| 亚洲欧美日本韩国| 石原莉奈一区二区三区在线观看| 亚洲第一综合色| 激情久久久久久久久久久久久久久久| 国产精品一区2区| 欧美在线观看视频在线| 欧美成人福利视频| 国产精品动漫网站| 久久99热狠狠色一区二区| 成人深夜视频在线观看| 日韩一级欧美一级| 亚洲裸体在线观看| 国产成人午夜视频| 欧美群妇大交群的观看方式| 久久天天做天天爱综合色| 视频在线观看国产精品| 日韩视频永久免费| 国产老妇另类xxxxx| 国产蜜臀97一区二区三区| 国产精品一区久久久久| 国产精品妹子av| 91丨porny丨户外露出| 亚洲国产视频网站| 欧美高清性hdvideosex| 国产综合色精品一区二区三区| 久久久久一区二区三区四区| 欧美伊人久久久久久午夜久久久久| 国产欧美日韩精品一区| 91一区二区三区在线观看| 亚洲成国产人片在线观看| 日韩免费视频一区二区| 亚洲乱码国产乱码精品精小说| 色综合天天在线| 中文字幕一区二区三区av| 波波电影院一区二区三区| 国产精品青草久久| 99re成人精品视频| 一区二区三区av电影| 欧美三区免费完整视频在线观看| 亚洲女厕所小便bbb| 欧美疯狂做受xxxx富婆| 国产一区美女在线| 亚洲视频免费看| 欧美丰满美乳xxx高潮www| 激情都市一区二区| 亚洲裸体xxx| 久久天天做天天爱综合色| 偷拍自拍另类欧美| 国产精品伦一区| 日韩一区二区免费在线观看| 97久久超碰国产精品| 国产一区二区三区香蕉| 亚洲18色成人| 欧美激情在线观看视频免费| 久久国产乱子精品免费女| 2023国产精品| 色婷婷精品久久二区二区蜜臀av| 亚洲成人黄色小说| 国产午夜亚洲精品午夜鲁丝片 | 日韩欧美国产电影| 国产麻豆视频精品| 亚洲成人av电影| 久久精品视频免费| 在线观看免费视频综合| 国产乱一区二区| 天天综合日日夜夜精品| 国产日韩精品视频一区| 在线日韩一区二区| 成人午夜视频福利| 人人精品人人爱| 亚洲激情图片一区| 国产精品素人视频| 欧美不卡在线视频| 欧美日韩日日夜夜| 色婷婷国产精品| 99国产精品国产精品毛片| 国产一区二区在线电影| 日韩精品一二区| 亚洲国产视频网站| 伊人色综合久久天天| 亚洲欧美日韩国产另类专区| 国产欧美日韩视频在线观看| 日韩欧美在线观看一区二区三区| 色综合久久综合网97色综合| 99视频超级精品| 99久久精品免费看国产| 91亚洲永久精品| 色av成人天堂桃色av| 一本色道a无线码一区v| 色久优优欧美色久优优| 欧美亚洲一区二区三区四区| 在线视频一区二区三区| 一本到高清视频免费精品| 在线观看日韩电影| 91麻豆精品国产91| 久久久国产精品不卡| 亚洲欧洲日本在线| 亚洲午夜在线视频| 免费在线一区观看| 国产麻豆成人传媒免费观看| 国产一区二区三区四区五区美女| 成人av影视在线观看| 欧美手机在线视频| 精品欧美一区二区三区精品久久| 久久久综合视频| 亚洲第一福利视频在线| 国产真实乱子伦精品视频| 色综合中文综合网| 国产精品二三区| 免费观看成人鲁鲁鲁鲁鲁视频| 男男视频亚洲欧美| 99精品视频在线免费观看| 欧美一区二区三区视频免费| 久久久亚洲国产美女国产盗摄| 亚洲精品成人少妇| 国产美女视频91| 欧美日韩精品欧美日韩精品一| 久久亚洲精华国产精华液| 一区二区在线电影| 国产a精品视频| 日韩欧美一级二级三级久久久| 中文字幕在线观看不卡| 久久99精品久久久久久动态图| 色综合天天视频在线观看| 国产三级久久久| 久热成人在线视频| 欧美电影一区二区| 亚洲亚洲人成综合网络| 色综合咪咪久久| 国产精品视频yy9299一区| 国产精品一区二区x88av| 欧美精品一区二区高清在线观看| 亚洲成人综合网站| 欧美日韩一区三区四区| 亚洲午夜电影网|