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

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

?? jpegfileformat.java

?? 源碼為Eclipse開源開發(fā)平臺(tái)桌面開發(fā)工具SWT的源代碼,
?? JAVA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
		// Progressive jpeg: need to keep all of the data units.		dataUnits = new int[nComponents][][];	} else {		// Sequential jpeg: only need one data unit.		dataUnit = new int[8 * 8];	}	for (int i = 0; i < nComponents; i++) {		int[] frameComponent = frameComponents[componentIds[i]];		int bufferSize = frameComponent[CW] * frameComponent[CH];		imageComponents[i] = new byte[bufferSize];		if (progressive) {			dataUnits[i] = new int[bufferSize][];		}	}	/* Process the tables preceding the scan header. */	processTables();		/* Start of Scan. */	scanHeader = new JPEGScanHeader(inputStream);	if (!scanHeader.verify()) SWT.error(SWT.ERROR_INVALID_IMAGE);		/* Process scan(s) and further tables until EOI. */	int progressiveScanCount = 0;	boolean done = false;	while(!done) {		resetInputBuffer();		precedingDCs = new int[4];		decodeScan();		if (progressive && loader.hasListeners()) {			ImageData imageData = createImageData();			loader.notifyListeners(new ImageLoaderEvent(loader, imageData, progressiveScanCount, false));			progressiveScanCount++;		}		/* Unread any buffered data before looking for tables again. */		int delta = 512 - bufferCurrentPosition - 1;		if (delta > 0) {			byte[] unreadBuffer = new byte[delta];			System.arraycopy(dataBuffer, bufferCurrentPosition + 1, unreadBuffer, 0, delta);			try {				inputStream.unread(unreadBuffer);			} catch (IOException e) {				SWT.error(SWT.ERROR_IO, e);			}		}				/* Process the tables preceding the next scan header. */		JPEGSegment jpegSegment = processTables();		if (jpegSegment == null || jpegSegment.getSegmentMarker() == EOI) {			done = true;		} else {			scanHeader = new JPEGScanHeader(inputStream);			if (!scanHeader.verify()) SWT.error(SWT.ERROR_INVALID_IMAGE);		}	}		if (progressive) {		for (int ymcu = 0; ymcu < interleavedMcuRows; ymcu++) {			for (int xmcu = 0; xmcu < interleavedMcuCols; xmcu++) {				for (int iComp = 0; iComp < nComponents; iComp++) {					int[] frameComponent = frameComponents[componentIds[iComp]];					int hi = frameComponent[HI];					int vi = frameComponent[VI];					int compWidth = frameComponent[CW];					for (int ivi = 0; ivi < vi; ivi++) {						for (int ihi = 0; ihi < hi; ihi++) {							int index = (ymcu * vi + ivi) * compWidth + xmcu * hi + ihi;							dataUnit = dataUnits[iComp][index];							dequantize(dataUnit, iComp);							inverseDCT(dataUnit);							storeData(dataUnit, iComp, xmcu, ymcu, hi, ihi, vi, ivi);						}					}				}			}		}	}	ImageData imageData = createImageData();	if (progressive && loader.hasListeners()) {		loader.notifyListeners(new ImageLoaderEvent(loader, imageData, progressiveScanCount, true));	}	return new ImageData[] {imageData};}ImageData createImageData() {	return ImageData.internal_new(		imageWidth,		imageHeight, 		nComponents * samplePrecision,		setUpPalette(),		nComponents == 1 ? 4 : 1,		decodeImageComponents(),		0,		null,		null,		-1,		-1,		SWT.IMAGE_JPEG,		0,		0,		0,		0);}int nextBit() {	if (currentBitCount != 0) {		currentBitCount--;		currentByte *= 2;		if (currentByte > 255) {			currentByte -= 256;			return 1;		} else {			return 0;		}	}	bufferCurrentPosition++;	if (bufferCurrentPosition >= 512) {		resetInputBuffer();		bufferCurrentPosition = 0;	}	currentByte = dataBuffer[bufferCurrentPosition] & 0xFF;	currentBitCount = 8;	byte nextByte;	if (bufferCurrentPosition == 511) {		resetInputBuffer();		currentBitCount = 8;		nextByte = dataBuffer[0];	} else {		nextByte = dataBuffer[bufferCurrentPosition + 1];	}	if (currentByte == 0xFF) {		if (nextByte == 0) {			bufferCurrentPosition ++;			currentBitCount--;			currentByte *= 2;			if (currentByte > 255) {				currentByte -= 256;				return 1;			} else {				return 0;			}		} else {			if ((nextByte & 0xFF) + 0xFF00 == DNL) {				getDNL();				return 0;			} else {				SWT.error(SWT.ERROR_INVALID_IMAGE);				return 0;			}		}	} else {		currentBitCount--;		currentByte *= 2;		if (currentByte > 255) {			currentByte -= 256;			return 1;		} else {			return 0;		}	}}void processRestartInterval() {	do {		bufferCurrentPosition++;		if (bufferCurrentPosition > 511) {			resetInputBuffer();			bufferCurrentPosition = 0;		}		currentByte = dataBuffer[bufferCurrentPosition] & 0xFF;	} while (currentByte != 0xFF);	while (currentByte == 0xFF) {		bufferCurrentPosition++;		if (bufferCurrentPosition > 511) {			resetInputBuffer();			bufferCurrentPosition = 0;		}		currentByte = dataBuffer[bufferCurrentPosition] & 0xFF;	}	if (currentByte != ((RST0 + nextRestartNumber) % 256)) {		SWT.error(SWT.ERROR_INVALID_IMAGE);	}	bufferCurrentPosition++;	if (bufferCurrentPosition > 511) {		resetInputBuffer();		bufferCurrentPosition = 0;	}	currentByte = dataBuffer[bufferCurrentPosition] & 0xFF;	currentBitCount = 8;	restartsToGo = restartInterval;	nextRestartNumber = (nextRestartNumber + 1) % 8;	precedingDCs = new int[4];	eobrun = 0;}/* Process all markers until a frame header, scan header, or EOI is found. */JPEGSegment processTables() {	while (true) {		JPEGSegment jpegSegment = seekUnspecifiedMarker(inputStream);		if (jpegSegment == null) return null;		JPEGFrameHeader sof = new JPEGFrameHeader(jpegSegment.reference);		if (sof.verify()) {			return jpegSegment;		}		int marker = jpegSegment.getSegmentMarker();		switch (marker) {			case SOI: // there should only be one SOI per file				SWT.error(SWT.ERROR_INVALID_IMAGE);			case EOI:			case SOS:				return jpegSegment;			case DQT:				getDQT();				break;			case DHT:				getDHT();				break;			case DAC:				getDAC();				break;			case DRI:				getDRI();				break;			case APP0:				getAPP0();				break;			case COM:				getCOM();				break;			default:				skipSegmentFrom(inputStream);					}	}}void quantizeData(int[] dataUnit, int iComp) {	int[] qTable = quantizationTables[frameComponents[componentIds[iComp]][TQI]];	for (int i = 0; i < dataUnit.length; i++) {		int zzIndex = ZigZag8x8[i];		int data = dataUnit[zzIndex];		int absData = data < 0 ? 0 - data : data;		int qValue = qTable[i];		int q2 = qValue / 2;		absData += q2;		if (absData < qValue) {			dataUnit[zzIndex] = 0;		} else {			absData /= qValue;			if (data >= 0) {				dataUnit[zzIndex] = absData;			} else {				dataUnit[zzIndex] = 0 - absData;			}		}	}}int receive(int nBits) {	int v = 0;	for (int i = 0; i < nBits; i++) {		v = v * 2 + nextBit();	}	return v;}void resetInputBuffer() {	if (dataBuffer == null) {		dataBuffer = new byte[512];	}	try {		inputStream.read(dataBuffer);	} catch (IOException e) {		SWT.error(SWT.ERROR_IO, e);	}	currentBitCount = 0;	bufferCurrentPosition = -1;}void resetOutputBuffer() {	if (dataBuffer == null) {		dataBuffer = new byte[512];	} else {		try {			outputStream.write(dataBuffer, 0, bufferCurrentPosition);		} catch (IOException e) {			SWT.error(SWT.ERROR_IO, e);		}	}	bufferCurrentPosition = 0;}static JPEGSegment seekUnspecifiedMarker(LEDataInputStream byteStream) {	byte[] byteArray = new byte[2];	try {		while (true) {			if (byteStream.read(byteArray, 0, 1) != 1) return null;			if (byteArray[0] == (byte) 0xFF) {				if (byteStream.read(byteArray, 1, 1) != 1) return null;				if (byteArray[1] != (byte) 0xFF && byteArray[1] != 0) {					byteStream.unread(byteArray);					return new JPEGSegment(byteArray);				}			}		}	} catch (IOException e) {		SWT.error(SWT.ERROR_IO, e);	}	return null;}PaletteData setUpPalette() {	if (nComponents == 1) {		RGB[] entries = new RGB[256];		for (int i = 0; i < 256; i++) {			entries[i] = new RGB(i, i, i);		}		return new PaletteData(entries);	}	return new PaletteData(0xFF, 0xFF00, 0xFF0000);}static void skipSegmentFrom(LEDataInputStream byteStream) {	try {		byte[] byteArray = new byte[4];		JPEGSegment jpegSegment = new JPEGSegment(byteArray);			if (byteStream.read(byteArray) != byteArray.length) {			SWT.error(SWT.ERROR_INVALID_IMAGE);		}		if (!(byteArray[0] == -1 && byteArray[1] != 0 && byteArray[1] != -1)) {			SWT.error(SWT.ERROR_INVALID_IMAGE);		}		int delta = jpegSegment.getSegmentLength() - 2;		byteStream.skip(delta);	} catch (Exception e) {		SWT.error(SWT.ERROR_IO, e);	}}void storeData(int[] dataUnit, int iComp, int xmcu, int ymcu, int hi, int ihi, int vi, int ivi) {	byte[] compImage = imageComponents[iComp];	int[] frameComponent = frameComponents[componentIds[iComp]];	int compWidth = frameComponent[CW];	int destIndex = ((ymcu * vi + ivi) * compWidth * DCTSIZE) + ((xmcu * hi + ihi) * DCTSIZE);	int srcIndex = 0;	for (int i = 0; i < DCTSIZE; i++) {		for (int col = 0; col < DCTSIZE; col++) {			int x = dataUnit[srcIndex] + 128;			if (x < 0) {				x = 0;			} else {				if (x > 255) x = 255;			}			compImage[destIndex + col] = (byte)x;			srcIndex++;		}		destIndex += compWidth;	}}void unloadIntoByteStream(ImageData image) {	if (!new JPEGStartOfImage().writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	JPEGAppn appn = new JPEGAppn(new byte[] {(byte)0xFF, (byte)0xE0, 0, 0x10, 0x4A, 0x46, 0x49, 0x46, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0});	if (!appn.writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	quantizationTables = new int[4][];	JPEGQuantizationTable chromDQT = JPEGQuantizationTable.defaultChrominanceTable();	chromDQT.scaleBy(encoderQFactor);	int[] jpegDQTKeys = chromDQT.getQuantizationTablesKeys();	int[][] jpegDQTValues = chromDQT.getQuantizationTablesValues();	for (int i = 0; i < jpegDQTKeys.length; i++) {		quantizationTables[jpegDQTKeys[i]] = jpegDQTValues[i];	}	JPEGQuantizationTable lumDQT = JPEGQuantizationTable.defaultLuminanceTable();	lumDQT.scaleBy(encoderQFactor);	jpegDQTKeys = lumDQT.getQuantizationTablesKeys();	jpegDQTValues = lumDQT.getQuantizationTablesValues();	for (int i = 0; i < jpegDQTKeys.length; i++) {		quantizationTables[jpegDQTKeys[i]] = jpegDQTValues[i];	}	if (!lumDQT.writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	if (!chromDQT.writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	int frameLength, scanLength, precision;	int[][] frameParams, scanParams;	if (image.depth == 1) {		frameLength = 11;		frameParams = new int[1][];		frameParams[0] = new int[] {1, 1, 1, 0, 0};		scanParams = new int[1][];		scanParams[0] = new int[] {0, 0};		scanLength = 8;		nComponents = 1;		precision = 1;	} else {		frameLength = 17;		frameParams = new int[3][];		frameParams[0] = new int[] {0, 2, 2, 0, 0};		frameParams[1] = new int[] {1, 1, 1, 0, 0};		frameParams[2] = new int[] {1, 1, 1, 0, 0};		scanParams = new int[3][];		scanParams[0] = new int[] {0, 0};		scanParams[1] = new int[] {1, 1};		scanParams[2] = new int[] {1, 1};		scanLength = 12;		nComponents = 3;		precision = 8;	}	imageWidth = image.width;	imageHeight = image.height;	frameHeader = new JPEGFrameHeader(new byte[19]);	frameHeader.setSegmentMarker(SOF0);	frameHeader.setSegmentLength(frameLength);	frameHeader.setSamplePrecision(precision);	frameHeader.setSamplesPerLine(imageWidth);	frameHeader.setNumberOfLines(imageHeight);	frameHeader.setNumberOfImageComponents(nComponents);	frameHeader.componentParameters = frameParams;	frameHeader.componentIdentifiers = new int[] {0, 1, 2};	frameHeader.initializeContents();	if (!frameHeader.writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	frameComponents = frameParams;	componentIds = frameHeader.componentIdentifiers;	maxH = frameHeader.getMaxHFactor();	maxV = frameHeader.getMaxVFactor();	int mcuWidth = maxH * DCTSIZE;	int mcuHeight = maxV * DCTSIZE;	interleavedMcuCols = (imageWidth + mcuWidth - 1) / mcuWidth;	interleavedMcuRows = (imageHeight + mcuHeight - 1) / mcuHeight;	acHuffmanTables = new JPEGHuffmanTable[4];	dcHuffmanTables = new JPEGHuffmanTable[4];	JPEGHuffmanTable[] dhtTables = new JPEGHuffmanTable[] {		JPEGHuffmanTable.getDefaultDCLuminanceTable(),		JPEGHuffmanTable.getDefaultDCChrominanceTable(),		JPEGHuffmanTable.getDefaultACLuminanceTable(),		JPEGHuffmanTable.getDefaultACChrominanceTable()	};	for (int i = 0; i < dhtTables.length; i++) {		JPEGHuffmanTable dhtTable = dhtTables[i];		if (!dhtTable.writeToStream(outputStream)) {			SWT.error(SWT.ERROR_IO);		}		JPEGHuffmanTable[] allTables = dhtTable.getAllTables();		for (int j = 0; j < allTables.length; j++) {			JPEGHuffmanTable huffmanTable = allTables[j];			if (huffmanTable.getTableClass() == 0) {				dcHuffmanTables[huffmanTable.getTableIdentifier()] = huffmanTable;			} else {				acHuffmanTables[huffmanTable.getTableIdentifier()] = huffmanTable;			}		}	}	precedingDCs = new int[4];	scanHeader = new JPEGScanHeader(new byte[14]);	scanHeader.setSegmentMarker(SOS);	scanHeader.setSegmentLength(scanLength);	scanHeader.setNumberOfImageComponents(nComponents);	scanHeader.setStartOfSpectralSelection(0);	scanHeader.setEndOfSpectralSelection(63);	scanHeader.componentParameters = scanParams;	scanHeader.initializeContents();	if (!scanHeader.writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}	convertImageToYCbCr(image);	resetOutputBuffer();	currentByte = 0;	currentBitCount = 0;	encodeScan();	if (!new JPEGEndOfImage().writeToStream(outputStream)) {		SWT.error(SWT.ERROR_IO);	}}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久久久| 国产一区二区三区在线看麻豆| 一区二区视频在线看| 日韩一区在线播放| 日韩一区中文字幕| 亚洲女人的天堂| 一区二区三区在线观看国产| 亚洲视频你懂的| 亚洲午夜久久久久久久久电影网| 亚洲一区在线观看网站| 五月天欧美精品| 日韩**一区毛片| 国产一区二三区好的| 国产91精品久久久久久久网曝门| 粉嫩av一区二区三区在线播放 | 欧美图片一区二区三区| 欧美日韩一卡二卡三卡| 欧美一区二区三区四区久久| 精品乱码亚洲一区二区不卡| 久久蜜桃av一区精品变态类天堂| 国产欧美一区二区精品仙草咪| 国产精品婷婷午夜在线观看| 中文字幕亚洲成人| 亚洲在线成人精品| 美国十次了思思久久精品导航| 极品少妇xxxx精品少妇偷拍| 国产很黄免费观看久久| 日本乱人伦一区| 日韩欧美一级在线播放| 国产亚洲精品久| 一区二区三国产精华液| 蜜桃视频在线一区| 成人免费毛片aaaaa**| 在线视频欧美精品| 欧美一二三区在线观看| 欧美韩国日本一区| 亚洲大型综合色站| 国产乱人伦偷精品视频不卡| 91麻豆国产精品久久| 91精品国产综合久久福利| 久久综合久久久久88| 亚洲免费观看高清完整版在线观看| 亚洲妇女屁股眼交7| 精品一区二区三区不卡 | 国产欧美一区二区精品婷婷| 亚洲精品自拍动漫在线| 国内精品伊人久久久久av影院 | 国产精品美女久久久久久| 午夜精品久久久久久不卡8050| 精品一区二区免费在线观看| 色综合网站在线| 日韩欧美一区中文| 亚洲欧美激情在线| 国产综合久久久久久鬼色| 在线观看亚洲专区| 日本一区二区视频在线观看| 亚洲国产欧美在线| 国产精品亚洲一区二区三区妖精 | 欧美大片一区二区三区| 一区二区三区精品在线| 国模大尺度一区二区三区| 欧美亚洲国产一区二区三区| 日本一区二区三区dvd视频在线| 亚洲电影欧美电影有声小说| 成人一区在线看| 欧美一区二区三区四区高清| 亚洲免费在线观看视频| 国产精品18久久久久久久久| 555www色欧美视频| 一区二区三区四区五区视频在线观看 | 视频一区二区三区入口| 99久久伊人精品| 久久久av毛片精品| 久热成人在线视频| 在线看日韩精品电影| 国产精品免费aⅴ片在线观看| 蜜臀av一级做a爰片久久| 91久久精品网| 综合婷婷亚洲小说| 成人午夜私人影院| 久久久av毛片精品| 国产一区二三区| 精品国产一区二区国模嫣然| 午夜亚洲福利老司机| 日本韩国欧美在线| 亚洲女同一区二区| 91色九色蝌蚪| 亚洲柠檬福利资源导航| 99re视频精品| 国产精品久久久久久久久久免费看| 激情小说欧美图片| 精品少妇一区二区三区| 日韩av一二三| 337p亚洲精品色噜噜噜| 五月天一区二区三区| 欧美日韩精品是欧美日韩精品| 一区二区日韩av| 欧美少妇bbb| 亚洲无人区一区| 欧美怡红院视频| 五月激情综合色| 欧美丰满高潮xxxx喷水动漫| 偷拍一区二区三区| 91精品国产欧美日韩| 奇米影视一区二区三区| 日韩精品一区二区在线观看| 久久精品国产精品亚洲红杏| 日韩欧美国产午夜精品| 经典三级一区二区| 久久精品亚洲乱码伦伦中文 | 日韩精品一区二区三区中文精品 | 欧美精品色综合| 免费一级欧美片在线观看| 91精品一区二区三区在线观看| 蜜芽一区二区三区| 精品对白一区国产伦| 国产精品一卡二| 亚洲欧美自拍偷拍| 欧美自拍偷拍午夜视频| 午夜久久久影院| 日韩视频一区在线观看| 国产一区二区免费在线| 国产精品拍天天在线| 色欧美片视频在线观看| 性感美女久久精品| 精品欧美一区二区三区精品久久| 国产伦精品一区二区三区免费 | 精品一区二区三区在线播放视频 | 精品中文字幕一区二区小辣椒| 26uuu久久综合| 97久久精品人人做人人爽50路 | 91麻豆国产自产在线观看| 亚洲成精国产精品女| 精品国产乱码久久久久久图片 | 99久久精品国产麻豆演员表| 亚洲制服丝袜av| 337p粉嫩大胆色噜噜噜噜亚洲| 成人性生交大片免费看视频在线| 亚洲精品一二三| 欧美va亚洲va在线观看蝴蝶网| 懂色中文一区二区在线播放| 一级精品视频在线观看宜春院 | 日韩精品1区2区3区| 久久精品综合网| 欧美日韩在线观看一区二区| 精品一二三四在线| 亚洲人成网站影音先锋播放| 日韩三级免费观看| 99久久99久久综合| 美女爽到高潮91| 亚洲欧美日韩电影| 精品国免费一区二区三区| 91视频91自| 国产精品一区专区| 亚洲1区2区3区视频| 国产欧美精品一区二区三区四区| 欧美性猛交xxxx乱大交退制版| 国产美女在线观看一区| 亚洲一区二区三区自拍| 国产亚洲精品7777| 正在播放亚洲一区| 99精品国产一区二区三区不卡| 免费高清在线一区| 亚洲精品美腿丝袜| 亚洲国产精品v| 精品欧美一区二区三区精品久久| 色嗨嗨av一区二区三区| 国产成+人+日韩+欧美+亚洲| 日韩精品三区四区| 亚洲猫色日本管| 亚洲国产精品成人综合色在线婷婷 | 国产激情精品久久久第一区二区| 午夜欧美大尺度福利影院在线看| 中文字幕日韩一区| 久久久亚洲欧洲日产国码αv| 欧美日韩精品一区二区天天拍小说| 成人免费毛片嘿嘿连载视频| 精品一区在线看| 免费人成精品欧美精品| 亚洲一区二区美女| 1000精品久久久久久久久| 久久久噜噜噜久噜久久综合| 91精品国产综合久久精品性色| 色综合久久久久网| 99视频精品在线| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产亚洲福利社区一区| 亚洲美女一区二区三区| 国产白丝网站精品污在线入口| 欧美视频在线播放| √…a在线天堂一区| 亚洲成人你懂的| 欧美三片在线视频观看| 亚洲免费在线看| 波波电影院一区二区三区| 欧美成人精品高清在线播放| 婷婷六月综合亚洲| 欧美一三区三区四区免费在线看| 天堂va蜜桃一区二区三区漫画版| 91丨九色丨尤物|