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

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

?? tif_imageiter.c

?? tiff格式傳真源碼例子
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_imageiter.c,v 1.2 2004/05/19 17:14:45 dron Exp $ *//* * Copyright (c) 1991-1996 Sam Leffler * Copyright (c) 1991-1996 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. *//* * TIFF Library * * Written by Conrad J. Poelman, PL/WSAT, Kirtland AFB, NM on 26 Mar 96. * * This file contains code to allow a calling program to "iterate" over each * pixels in an image as it is read from the file. The iterator takes care of * reading strips versus (possibly clipped) tiles, decoding the information * according to the decoding method, and so on, so that calling program can * ignore those details. The calling program does, however, need to be * conscious of the type of the pixel data that it is receiving. * * For reasons of efficiency, the callback function actually gets called for  * "blocks" of pixels rather than for individual pixels. The format of the * callback arguments is given below. * * This code was taken from TIFFReadRGBAImage() in tif_getimage.c of the original * TIFF distribution, and simplified and generalized to provide this general * iteration capability. Those routines could certainly be re-implemented in terms * of a TIFFImageIter if desired. * */#include "tiffiop.h"#include "tif_imageiter.h"#include <assert.h>#include <stdio.h>static	int gtTileContig(TIFFImageIter*, void *udata, uint32, uint32);static	int gtTileSeparate(TIFFImageIter*, void *udata, uint32, uint32);static	int gtStripContig(TIFFImageIter*, void *udata, uint32, uint32);static	int gtStripSeparate(TIFFImageIter*, void *udata, uint32, uint32);static	const char photoTag[] = "PhotometricInterpretation";static intisCCITTCompression(TIFF* tif){    uint16 compress;    TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);    return (compress == COMPRESSION_CCITTFAX3 ||	    compress == COMPRESSION_CCITTFAX4 ||	    compress == COMPRESSION_CCITTRLE ||	    compress == COMPRESSION_CCITTRLEW);}intTIFFImageIterBegin(TIFFImageIter* img, TIFF* tif, int stop, char emsg[1024]){    uint16* sampleinfo;    uint16 extrasamples;    uint16 planarconfig;    int colorchannels;    img->tif = tif;    img->stoponerr = stop;    TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);    img->alpha = 0;    TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);    TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,	&extrasamples, &sampleinfo);    if (extrasamples == 1)	switch (sampleinfo[0]) {	case EXTRASAMPLE_ASSOCALPHA:	/* data is pre-multiplied */	case EXTRASAMPLE_UNASSALPHA:	/* data is not pre-multiplied */	    img->alpha = sampleinfo[0];	    break;	}    colorchannels = img->samplesperpixel - extrasamples;    TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {	switch (colorchannels) {	case 1:	    if (isCCITTCompression(tif))		img->photometric = PHOTOMETRIC_MINISWHITE;	    else		img->photometric = PHOTOMETRIC_MINISBLACK;	    break;	case 3:	    img->photometric = PHOTOMETRIC_RGB;	    break;	default:	    sprintf(emsg, "Missing needed %s tag", photoTag);	    return (0);	}    }    switch (img->photometric) {    case PHOTOMETRIC_PALETTE:	if (!TIFFGetField(tif, TIFFTAG_COLORMAP,	    &img->redcmap, &img->greencmap, &img->bluecmap)) {	    TIFFError(TIFFFileName(tif), "Missing required \"Colormap\" tag");	    return (0);	}	/* fall thru... */    case PHOTOMETRIC_MINISWHITE:    case PHOTOMETRIC_MINISBLACK:/* This should work now so skip the check - BSR	if (planarconfig == PLANARCONFIG_CONTIG && img->samplesperpixel != 1) {	    sprintf(emsg,		"Sorry, can not handle contiguous data with %s=%d, and %s=%d",		photoTag, img->photometric,		"Samples/pixel", img->samplesperpixel);	    return (0);	} */	break;    case PHOTOMETRIC_YCBCR:	if (planarconfig != PLANARCONFIG_CONTIG) {	    sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",		"Planarconfiguration", planarconfig);	    return (0);	}	/* It would probably be nice to have a reality check here. */	{ uint16 compress;	  TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);	  if (compress == COMPRESSION_JPEG && planarconfig == PLANARCONFIG_CONTIG) {	    /* can rely on libjpeg to convert to RGB */	    /* XXX should restore current state on exit */	    TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);	    img->photometric = PHOTOMETRIC_RGB;	  }	}	break;    case PHOTOMETRIC_RGB: 	if (colorchannels < 3) {	    sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",		"Color channels", colorchannels);	    return (0);	}	break;    case PHOTOMETRIC_SEPARATED: {	uint16 inkset;	TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);	if (inkset != INKSET_CMYK) {	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",		"InkSet", inkset);	    return (0);	}	if (img->samplesperpixel != 4) {	    sprintf(emsg, "Sorry, can not handle separated image with %s=%d",		"Samples/pixel", img->samplesperpixel);	    return (0);	}	break;    }    default:	sprintf(emsg, "Sorry, can not handle image with %s=%d",	    photoTag, img->photometric);	return (0);    }    TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);    TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);    TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);    switch (img->orientation) {    case ORIENTATION_BOTRIGHT:    case ORIENTATION_RIGHTBOT:	/* XXX */    case ORIENTATION_LEFTBOT:	/* XXX */	TIFFWarning(TIFFFileName(tif), "using bottom-left orientation");	img->orientation = ORIENTATION_BOTLEFT;	/* fall thru... */    case ORIENTATION_BOTLEFT:	break;    case ORIENTATION_TOPRIGHT:    case ORIENTATION_RIGHTTOP:	/* XXX */    case ORIENTATION_LEFTTOP:	/* XXX */    default:	TIFFWarning(TIFFFileName(tif), "using top-left orientation");	img->orientation = ORIENTATION_TOPLEFT;	/* fall thru... */    case ORIENTATION_TOPLEFT:	break;    }    img->isContig =	!(planarconfig == PLANARCONFIG_SEPARATE && colorchannels > 1);    if (img->isContig) {	img->get = TIFFIsTiled(tif) ? gtTileContig : gtStripContig;    } else {	img->get = TIFFIsTiled(tif) ? gtTileSeparate : gtStripSeparate;    }    return (1);}intTIFFImageIterGet(TIFFImageIter* img, void *udata, uint32 w, uint32 h){    if (img->get == NULL) {	TIFFError(TIFFFileName(img->tif), "No \"get\" routine setup");	return (0);    }    if (img->callback.any == NULL) {	TIFFError(TIFFFileName(img->tif),	    "No \"put\" routine setupl; probably can not handle image format");	return (0);    }    return (*img->get)(img, udata, w, h);}TIFFImageIterEnd(TIFFImageIter* img){    /* Nothing to free... ? */}/* * Read the specified image into an ABGR-format raster. */intTIFFReadImageIter(TIFF* tif,    uint32 rwidth, uint32 rheight, uint8* raster, int stop){    char emsg[1024];    TIFFImageIter img;    int ok;    if (TIFFImageIterBegin(&img, tif, stop, emsg)) {	/* XXX verify rwidth and rheight against width and height */	ok = TIFFImageIterGet(&img, raster, rwidth, img.height);	TIFFImageIterEnd(&img);    } else {	TIFFError(TIFFFileName(tif), emsg);	ok = 0;    }    return (ok);}/* * Get an tile-organized image that has *	PlanarConfiguration contiguous if SamplesPerPixel > 1 * or *	SamplesPerPixel == 1 */	static intgtTileContig(TIFFImageIter* img, void *udata, uint32 w, uint32 h)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线一区观看| 国产人成亚洲第一网站在线播放| 欧美亚洲国产一区在线观看网站| 99精品视频在线播放观看| 精品福利一二区| 精品av久久707| 国产精品一二三四| 亚洲欧美在线视频观看| 欧美日韩一区二区在线视频| 激情久久久久久久久久久久久久久久| 精品国产伦一区二区三区免费| 成人h动漫精品一区二区| 午夜一区二区三区在线观看| 久久久久亚洲蜜桃| 欧美羞羞免费网站| 国产成人亚洲综合a∨婷婷图片 | 极品尤物av久久免费看| 国产精品国产a| 日韩欧美在线123| 成人午夜伦理影院| 日韩中文字幕亚洲一区二区va在线| 日本一区二区电影| 91精品国产91热久久久做人人| 成人网页在线观看| 男女男精品视频网| 国产精品超碰97尤物18| 日韩欧美的一区二区| 成人激情开心网| 美美哒免费高清在线观看视频一区二区 | 亚洲影院理伦片| 久久婷婷色综合| 欧美日韩国产综合久久| 国产高清无密码一区二区三区| 一区二区欧美精品| 国产精品无遮挡| 欧美大片免费久久精品三p| 欧美日韩国产色站一区二区三区| 国产成人h网站| 波多野结衣中文字幕一区二区三区| 久久国产福利国产秒拍| 欧美精品vⅰdeose4hd| 婷婷丁香激情综合| 国产精品灌醉下药二区| 91极品美女在线| 日韩成人一级片| 久久久久久久精| 欧美视频一区二区三区| 国模娜娜一区二区三区| 1区2区3区精品视频| 91极品视觉盛宴| 狠狠色综合播放一区二区| 91激情五月电影| 菠萝蜜视频在线观看一区| 国产精品1区2区3区在线观看| 日本在线播放一区二区三区| 亚洲第一成人在线| 樱花影视一区二区| 亚洲一区二区三区四区的| 国产精品成人网| 国产欧美精品一区二区色综合朱莉| 欧美r级在线观看| 26uuu久久综合| 欧美高清在线视频| 国产精品色哟哟| 国产日韩欧美综合一区| 久久久五月婷婷| 久久久不卡网国产精品一区| 久久精品视频一区二区三区| 久久影视一区二区| 国产日韩欧美一区二区三区乱码 | av成人动漫在线观看| 国产不卡一区视频| 99久久精品免费精品国产| 91在线视频在线| 色欧美日韩亚洲| 欧美精品一二三区| 日韩欧美中文字幕精品| 久久婷婷一区二区三区| 国产精品色在线| 亚洲激情六月丁香| 麻豆一区二区99久久久久| 国产资源在线一区| 欧美中文字幕一区二区三区| 欧美喷潮久久久xxxxx| 国产亚洲女人久久久久毛片| 国产精品美女久久久久久久久| 日本一区二区三区电影| 欧美一区二区大片| 欧美日韩另类一区| 日韩午夜激情av| 国产欧美日韩精品a在线观看| 日日夜夜免费精品视频| 美女精品自拍一二三四| 丁香亚洲综合激情啪啪综合| 不卡欧美aaaaa| 欧美视频一区在线| 精品日本一线二线三线不卡| 国产嫩草影院久久久久| 亚洲成人av电影在线| 国产xxx精品视频大全| 粉嫩一区二区三区在线看| 成人福利电影精品一区二区在线观看| 91高清视频免费看| 欧美白人最猛性xxxxx69交| 亚洲美女一区二区三区| 日韩av一区二区三区| 9色porny自拍视频一区二区| 欧美情侣在线播放| 精品对白一区国产伦| 亚洲国产一区在线观看| 国产一区二区女| 欧美一区二区国产| 亚洲免费电影在线| 国产一区二区看久久| 欧美三级蜜桃2在线观看| 国产亚洲一区二区三区在线观看 | 一本色道亚洲精品aⅴ| 在线观看91av| 国产精品久久久一本精品 | 成人一区二区视频| 日韩精品一区二区三区老鸭窝| 亚洲老司机在线| 国产九色sp调教91| 日韩精品一区二区三区蜜臀 | 欧美精品日韩一区| 亚洲欧洲日韩av| 国产一区 二区 三区一级| 欧美日韩午夜精品| √…a在线天堂一区| 国产酒店精品激情| 欧美一区二区三区四区视频| 日韩伦理免费电影| 国产九色sp调教91| 欧美成人激情免费网| 亚洲综合一区二区| hitomi一区二区三区精品| 久久久亚洲国产美女国产盗摄 | 一区二区三区国产精品| 成人精品免费视频| 久久久久99精品国产片| 亚洲va国产天堂va久久en| 夫妻av一区二区| 久久精品视频一区二区三区| 麻豆成人91精品二区三区| 欧美日韩日日骚| 在线观看一区日韩| 毛片基地黄久久久久久天堂| 日韩成人免费看| 欧美激情在线一区二区| 91视频国产资源| 午夜久久久影院| 国产午夜精品一区二区| 成人av高清在线| 视频一区二区欧美| 久久婷婷综合激情| 欧美高清视频www夜色资源网| 三级欧美在线一区| 亚洲图片激情小说| 精品视频在线看| 亚洲黄色尤物视频| 中文字幕欧美区| 免费日本视频一区| 精品三级在线观看| 久久er精品视频| 精品国产一二三区| 国产一区二区三区最好精华液| 日韩一级高清毛片| 日本中文字幕一区二区视频| 日韩一区二区免费在线观看| 人人精品人人爱| 久久欧美中文字幕| 成人一区在线观看| 亚洲欧美一区二区三区孕妇| 成人毛片视频在线观看| 国产精品毛片无遮挡高清| 精品一区二区三区免费观看| 日韩一区二区在线看| 国产成人在线看| 亚洲视频在线观看一区| 在线观看亚洲专区| 男人的天堂久久精品| 国产丝袜在线精品| 一本大道久久精品懂色aⅴ| 日韩福利电影在线观看| 日韩欧美一级二级| 成人性生交大片免费看视频在线 | 亚洲午夜av在线| 日韩一区二区三免费高清| 国产乱妇无码大片在线观看| 国产精品乱码人人做人人爱| 色噜噜狠狠成人中文综合| 美国三级日本三级久久99 | 在线中文字幕一区| 奇米影视在线99精品| 久久精品夜色噜噜亚洲a∨| 国产精品亚洲一区二区三区在线| 亚洲人成在线播放网站岛国| 欧美日韩国产一级片| 成人性生交大合| 天天综合色天天综合色h|