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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libjpeg.txt

?? 基于周立功EasyArm2200的LPC2292平臺驅動ili9325TFT屏控制器
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
	...
	cinfo.err = jpeg_std_error(&jerr);
	jpeg_create_decompress(&cinfo);

(Both here and in the IJG code, we usually use variable name "cinfo" for
both compression and decompression objects.)


2. Specify the source of the compressed data (eg, a file).

As previously mentioned, the JPEG library reads compressed data from a "data
source" module.  The library includes one data source module which knows how
to read from a stdio stream.  You can use your own source module if you want
to do something else, as discussed later.

If you use the standard source module, you must open the source stdio stream
beforehand.  Typical code for this step looks like:

	FILE * infile;
	...
	if ((infile = fopen(filename, "rb")) == NULL) {
	    fprintf(stderr, "can't open %s\n", filename);
	    exit(1);
	}
	jpeg_stdio_src(&cinfo, infile);

where the last line invokes the standard source module.

WARNING: it is critical that the binary compressed data be read unchanged.
On non-Unix systems the stdio library may perform newline translation or
otherwise corrupt binary data.  To suppress this behavior, you may need to use
a "b" option to fopen (as shown above), or use setmode() or another routine to
put the stdio stream in binary mode.  See cjpeg.c and djpeg.c for code that
has been found to work on many systems.

You may not change the data source between calling jpeg_read_header() and
jpeg_finish_decompress().  If you wish to read a series of JPEG images from
a single source file, you should repeat the jpeg_read_header() to
jpeg_finish_decompress() sequence without reinitializing either the JPEG
object or the data source module; this prevents buffered input data from
being discarded.


3. Call jpeg_read_header() to obtain image info.

Typical code for this step is just

	jpeg_read_header(&cinfo, TRUE);

This will read the source datastream header markers, up to the beginning
of the compressed data proper.  On return, the image dimensions and other
info have been stored in the JPEG object.  The application may wish to
consult this information before selecting decompression parameters.

More complex code is necessary if
  * A suspending data source is used --- in that case jpeg_read_header()
    may return before it has read all the header data.  See "I/O suspension",
    below.  The normal stdio source manager will NOT cause this to happen.
  * Abbreviated JPEG files are to be processed --- see the section on
    abbreviated datastreams.  Standard applications that deal only in
    interchange JPEG files need not be concerned with this case either.

It is permissible to stop at this point if you just wanted to find out the
image dimensions and other header info for a JPEG file.  In that case,
call jpeg_destroy() when you are done with the JPEG object, or call
jpeg_abort() to return it to an idle state before selecting a new data
source and reading another header.


4. Set parameters for decompression.

jpeg_read_header() sets appropriate default decompression parameters based on
the properties of the image (in particular, its colorspace).  However, you
may well want to alter these defaults before beginning the decompression.
For example, the default is to produce full color output from a color file.
If you want colormapped output you must ask for it.  Other options allow the
returned image to be scaled and allow various speed/quality tradeoffs to be
selected.  "Decompression parameter selection", below, gives details.

If the defaults are appropriate, nothing need be done at this step.

Note that all default values are set by each call to jpeg_read_header().
If you reuse a decompression object, you cannot expect your parameter
settings to be preserved across cycles, as you can for compression.
You must set desired parameter values each time.


5. jpeg_start_decompress(...);

Once the parameter values are satisfactory, call jpeg_start_decompress() to
begin decompression.  This will initialize internal state, allocate working
memory, and prepare for returning data.

Typical code is just

	jpeg_start_decompress(&cinfo);

If you have requested a multi-pass operating mode, such as 2-pass color
quantization, jpeg_start_decompress() will do everything needed before data
output can begin.  In this case jpeg_start_decompress() may take quite a while
to complete.  With a single-scan (non progressive) JPEG file and default
decompression parameters, this will not happen; jpeg_start_decompress() will
return quickly.

After this call, the final output image dimensions, including any requested
scaling, are available in the JPEG object; so is the selected colormap, if
colormapped output has been requested.  Useful fields include

	output_width		image width and height, as scaled
	output_height
	out_color_components	# of color components in out_color_space
	output_components	# of color components returned per pixel
	colormap		the selected colormap, if any
	actual_number_of_colors		number of entries in colormap

output_components is 1 (a colormap index) when quantizing colors; otherwise it
equals out_color_components.  It is the number of JSAMPLE values that will be
emitted per pixel in the output arrays.

Typically you will need to allocate data buffers to hold the incoming image.
You will need output_width * output_components JSAMPLEs per scanline in your
output buffer, and a total of output_height scanlines will be returned.

Note: if you are using the JPEG library's internal memory manager to allocate
data buffers (as djpeg does), then the manager's protocol requires that you
request large buffers *before* calling jpeg_start_decompress().  This is a
little tricky since the output_XXX fields are not normally valid then.  You
can make them valid by calling jpeg_calc_output_dimensions() after setting the
relevant parameters (scaling, output color space, and quantization flag).


6. while (scan lines remain to be read)
	jpeg_read_scanlines(...);

Now you can read the decompressed image data by calling jpeg_read_scanlines()
one or more times.  At each call, you pass in the maximum number of scanlines
to be read (ie, the height of your working buffer); jpeg_read_scanlines()
will return up to that many lines.  The return value is the number of lines
actually read.  The format of the returned data is discussed under "Data
formats", above.  Don't forget that grayscale and color JPEGs will return
different data formats!

Image data is returned in top-to-bottom scanline order.  If you must write
out the image in bottom-to-top order, you can use the JPEG library's virtual
array mechanism to invert the data efficiently.  Examples of this can be
found in the sample application djpeg.

The library maintains a count of the number of scanlines returned so far
in the output_scanline field of the JPEG object.  Usually you can just use
this variable as the loop counter, so that the loop test looks like
"while (cinfo.output_scanline < cinfo.output_height)".  (Note that the test
should NOT be against image_height, unless you never use scaling.  The
image_height field is the height of the original unscaled image.)
The return value always equals the change in the value of output_scanline.

If you don't use a suspending data source, it is safe to assume that
jpeg_read_scanlines() reads at least one scanline per call, until the
bottom of the image has been reached.

If you use a buffer larger than one scanline, it is NOT safe to assume that
jpeg_read_scanlines() fills it.  (The current implementation returns only a
few scanlines per call, no matter how large a buffer you pass.)  So you must
always provide a loop that calls jpeg_read_scanlines() repeatedly until the
whole image has been read.


7. jpeg_finish_decompress(...);

After all the image data has been read, call jpeg_finish_decompress() to
complete the decompression cycle.  This causes working memory associated
with the JPEG object to be released.

Typical code:

	jpeg_finish_decompress(&cinfo);

If using the stdio source manager, don't forget to close the source stdio
stream if necessary.

It is an error to call jpeg_finish_decompress() before reading the correct
total number of scanlines.  If you wish to abort decompression, call
jpeg_abort() as discussed below.

After completing a decompression cycle, you may dispose of the JPEG object as
discussed next, or you may use it to decompress another image.  In that case
return to step 2 or 3 as appropriate.  If you do not change the source
manager, the next image will be read from the same source.


8. Release the JPEG decompression object.

When you are done with a JPEG decompression object, destroy it by calling
jpeg_destroy_decompress() or jpeg_destroy().  The previous discussion of
destroying compression objects applies here too.

Typical code:

	jpeg_destroy_decompress(&cinfo);


9. Aborting.

You can abort a decompression cycle by calling jpeg_destroy_decompress() or
jpeg_destroy() if you don't need the JPEG object any more, or
jpeg_abort_decompress() or jpeg_abort() if you want to reuse the object.
The previous discussion of aborting compression cycles applies here too.


Mechanics of usage: include files, linking, etc
-----------------------------------------------

Applications using the JPEG library should include the header file jpeglib.h
to obtain declarations of data types and routines.  Before including
jpeglib.h, include system headers that define at least the typedefs FILE and
size_t.  On ANSI-conforming systems, including <stdio.h> is sufficient; on
older Unix systems, you may need <sys/types.h> to define size_t.

If the application needs to refer to individual JPEG library error codes, also
include jerror.h to define those symbols.

jpeglib.h indirectly includes the files jconfig.h and jmorecfg.h.  If you are
installing the JPEG header files in a system directory, you will want to
install all four files: jpeglib.h, jerror.h, jconfig.h, jmorecfg.h.

The most convenient way to include the JPEG code into your executable program
is to prepare a library file ("libjpeg.a", or a corresponding name on non-Unix
machines) and reference it at your link step.  If you use only half of the
library (only compression or only decompression), only that much code will be
included from the library, unless your linker is hopelessly brain-damaged.
The supplied makefiles build libjpeg.a automatically (see install.doc).

While you can build the JPEG library as a shared library if the whim strikes
you, we don't really recommend it.  The trouble with shared libraries is that
at some point you'll probably try to substitute a new version of the library
without recompiling the calling applications.  That generally doesn't work
because the parameter struct declarations usually change with each new
version.  In other words, the library's API is *not* guaranteed binary
compatible across versions; we only try to ensure source-code compatibility.
(In hindsight, it might have been smarter to hide the parameter structs from
applications and introduce a ton of access functions instead.  Too late now,
however.)

On some systems your application may need to set up a signal handler to ensure
that temporary files are deleted if the program is interrupted.  This is most
critical if you are on MS-DOS and use the jmemdos.c memory manager back end;
it will try to grab extended memory for temp files, and that space will NOT be
freed automatically.  See cjpeg.c or djpeg.c for an example signal handler.

It may be worth pointing out that the core JPEG library does not actually
require the stdio library: only the default source/destination managers and
error handler need it.  You can use the library in a stdio-less environment
if you replace those modules and use jmemnobs.c (or another memory manager of
your own devising).  More info about the minimum system library requirements
may be found in jinclude.h.


ADVANCED FEATURES
=================

Compression parameter selection
-------------------------------

This section describes all the optional parameters you can set for JPEG
compression, as well as the "helper" routines provided to assist in this
task.  Proper setting of some parameters requires detailed understanding
of the JPEG standard; if you don't know what a parameter is for, it's best
not to mess with it!  See REFERENCES in the README file for pointers to
more info about JPEG.

It's a good idea to call jpeg_set_defaults() first, even if you plan to set
all the parameters; that way your code is more likely to work with future JPEG

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人自拍偷拍| 日本美女一区二区| 日本欧美肥老太交大片| 成人性生交大片免费看在线播放| 欧美影视一区在线| 国产精品天天看| 麻豆精品精品国产自在97香蕉| 在线精品亚洲一区二区不卡| 久久日韩粉嫩一区二区三区| 日韩av成人高清| 在线观看一区二区视频| 亚洲色图欧美偷拍| 国产激情一区二区三区四区 | 亚洲一区二区在线免费看| 国产精品综合久久| 日韩三级视频中文字幕| 婷婷综合五月天| 日本道精品一区二区三区| 国产精品拍天天在线| 国模冰冰炮一区二区| 日韩欧美国产精品一区| 婷婷久久综合九色综合绿巨人 | 国产一区二区剧情av在线| 在线成人免费观看| 亚洲午夜久久久久久久久电影网| 色吧成人激情小说| 一区二区三区在线视频观看58| 99精品久久免费看蜜臀剧情介绍| 国产精品久久夜| 成人黄色国产精品网站大全在线免费观看| 精品久久久久久久人人人人传媒| 免费在线看成人av| 91精品国产乱码久久蜜臀| 一区二区三区波多野结衣在线观看| 成人精品鲁一区一区二区| 国产精品免费免费| www.成人在线| 亚洲免费在线看| 欧美性欧美巨大黑白大战| 亚洲一区二区在线免费观看视频| 欧美日韩精品免费观看视频| 亚洲国产一区视频| 欧美一区在线视频| 国产综合色在线视频区| 国产三级欧美三级日产三级99| 国产精品99久久久| 国产精品久久久久久久久免费樱桃| 91年精品国产| 亚洲第一激情av| 欧美成人三级电影在线| 国产精品亚洲第一| 悠悠色在线精品| 91精品国产91久久久久久一区二区| 九一久久久久久| 国产精品视频第一区| 欧洲国产伦久久久久久久| 另类小说综合欧美亚洲| 国产精品久久久久久久蜜臀| 91精品91久久久中77777| 热久久久久久久| 国产欧美日产一区| 欧美三级日韩三级| 国产一区二区免费视频| 一区二区三区高清不卡| 日韩一区二区在线观看视频| 成人午夜又粗又硬又大| 天堂久久一区二区三区| 欧美经典一区二区| 欧美日韩一区二区三区四区五区| 精品一区二区三区在线播放| 亚洲女女做受ⅹxx高潮| 日韩精品一区二区三区四区| 91在线免费视频观看| 毛片一区二区三区| 亚洲欧洲国产专区| 日韩精品影音先锋| 一本一道波多野结衣一区二区| 老司机精品视频线观看86| 国产精品久久久久久久久免费相片| 91精品国产综合久久久蜜臀图片| 豆国产96在线|亚洲| 日韩精品一二三区| 亚洲丝袜自拍清纯另类| 久久久久久久久久美女| 欧美日韩国产成人在线91| 欧美日韩一区二区三区高清 | 精品少妇一区二区三区视频免付费 | 99久久久精品| 国产美女娇喘av呻吟久久| 亚洲va欧美va人人爽午夜| 国产精品传媒入口麻豆| 久久午夜电影网| 777亚洲妇女| 91国在线观看| 91在线免费播放| 成人av资源下载| 国产成人精品www牛牛影视| 免费国产亚洲视频| 亚洲成人黄色影院| 亚洲宅男天堂在线观看无病毒| 国产精品美女www爽爽爽| 久久综合九色综合97_久久久| 337p亚洲精品色噜噜狠狠| 91免费视频大全| 91在线观看污| 成人午夜免费视频| 国产一区二区毛片| 国产九色sp调教91| 国产乱人伦偷精品视频免下载| 久久精品99久久久| 九一九一国产精品| 狠狠狠色丁香婷婷综合激情| 久久不见久久见免费视频1| 日韩精品一级中文字幕精品视频免费观看 | 精品一区二区免费| 麻豆一区二区在线| 麻豆国产精品一区二区三区| 免费视频最近日韩| 麻豆成人av在线| 激情综合亚洲精品| 另类小说图片综合网| 蜜臀精品久久久久久蜜臀| 美女被吸乳得到大胸91| 精品一区二区三区不卡| jlzzjlzz亚洲女人18| 成人高清视频免费观看| 99re这里只有精品首页| 在线精品视频免费播放| 欧美一区中文字幕| 亚洲精品在线免费播放| 欧美极品美女视频| 亚洲激情在线播放| 日韩精品亚洲专区| 国产在线精品免费| 99久久777色| 欧美男男青年gay1069videost| 欧美一级午夜免费电影| 久久久久国产精品麻豆ai换脸| 国产精品久久久久婷婷| 一区二区三区在线观看网站| 日韩av午夜在线观看| 国产精品夜夜嗨| 色综合久久中文综合久久97| 9191国产精品| 国产日韩欧美精品电影三级在线| 综合电影一区二区三区 | 欧美一级艳片视频免费观看| 精品少妇一区二区三区日产乱码 | 国产91高潮流白浆在线麻豆| 91在线看国产| 精品久久久久久久人人人人传媒 | 国产精品自拍网站| 日本韩国欧美一区二区三区| 日韩精品一区二区三区视频在线观看| 国产三级三级三级精品8ⅰ区| 亚洲综合激情网| 国产91富婆露脸刺激对白| 欧美高清dvd| 最新久久zyz资源站| 美女视频网站黄色亚洲| 99久久99久久久精品齐齐| 精品久久久久久最新网址| 亚洲一区欧美一区| 91麻豆视频网站| 2024国产精品视频| 一区二区三区精品| 国产91精品欧美| 日韩一区二区三区免费看| 亚洲美女免费在线| 国产老女人精品毛片久久| 欧美日韩一级视频| 亚洲欧美激情小说另类| 国产suv精品一区二区883| 91精品国产品国语在线不卡| 亚洲欧美日韩一区| 国产一区二区美女诱惑| 欧美一区二区三级| 亚洲一区二区美女| 在线视频你懂得一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 国产一区二区在线看| 91精品国产综合久久久蜜臀粉嫩| 一区二区三区国产精品| 91蜜桃传媒精品久久久一区二区| 国产午夜精品一区二区三区四区| 蜜乳av一区二区三区| 欧美久久免费观看| 亚洲国产成人va在线观看天堂| 91麻豆蜜桃一区二区三区| 国产精品每日更新在线播放网址| 国产剧情一区二区| 久久久久久久久蜜桃| 国产福利一区二区三区视频在线| 日韩欧美国产小视频| 奇米一区二区三区| 欧美一区二区人人喊爽| 久久精品国产精品亚洲红杏 | 欧美日韩亚洲综合| 亚洲图片欧美综合| 欧美日韩国产首页在线观看|