⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tiffr.cpp

📁 一种效率高
💻 CPP
字号:
#ifdef HAVE_CONFIG_H#include"config.h"#endif#ifdef HAVE_LIBTIFF#include<tiffio.h>#include<qimage.h>#include"tiffr.h"void kimgio_tiff_read( QImageIO *io ){	TIFF *tiff;	uint32 width, height;	uint32 *data;	// FIXME: use qdatastream	// open file	tiff = TIFFOpen( io->fileName(), "r" );	if( tiff == 0 ) {		return;	}	// create image with loaded dimensions	TIFFGetField( tiff, TIFFTAG_IMAGEWIDTH,	&width );	TIFFGetField( tiff, TIFFTAG_IMAGELENGTH, &height );	QImage image( width, height, 32 );	data = (uint32 *)image.bits();	//Sven: changed to %ld for 64bit machines	debug( "unsigned size: %ld, uint32 size: %ld",		(long)sizeof(unsigned), (long)sizeof(uint32) );	// read data	bool stat =TIFFReadRGBAImage( tiff, width, height, data );	if( stat == 0 ) {		TIFFClose( tiff );		return;	}	// reverse image (it's upside down)	for( unsigned ctr = 0; ctr < (height>>1); ) {		unsigned *line1 = (unsigned *)image.scanLine( ctr );		unsigned *line2 = (unsigned *)image.scanLine( height 			- ( ++ctr ) );		for( unsigned x = 0; x < width; x++ ) {			int temp = *line1;			*line1 = *line2;			*line2 = temp;			line1++;			line2++;		}		// swap rows	}	// set channel order to Qt order	// FIXME: Right now they are the same, but will it change?//	for( int ctr = (image.numBytes() / sizeof(uint32))+1; ctr ; ctr-- ) {//		// TODO: manage alpha with TIFFGetA//		*data = qRgb( TIFFGetR( *data ), //			TIFFGetG( *data ), TIFFGetB( *data ) );//		data++;//	}	TIFFClose( tiff );	io->setImage( image );	io->setStatus ( 0 );}void kimgio_tiff_write( QImageIO * ){	// TODO: stub}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -