使用libtiff庫生成tif檔案,格式轉換。

2021-10-05 21:05:40 字數 2388 閱讀 1281

該**主要使用libtiff庫,將t.6 格式檔案轉換成 t.4格式。

int  tiff2tiff(char *psrcfile, char *pdstfile)

if ((outiff = tiffopen(pdstfile, "w")) == null)

//獲取原始檔的配置資訊

tiffgetfield(intiff, tifftag_imagewidth, &width); // 得到寬度

tiffgetfield(intiff, tifftag_imagelength, &height); // 得到高度

tiffgetfield(intiff, tifftag_samplesperpixel, &samplesperpixel); // bits per channel (sample) 每個通道(樣本)(1bit或者8bit)

tiffgetfield(intiff, tifftag_bitspersample, &bitspersample); // samples per pixel 每畫素取樣(1通道或者3通道)

tiffgetfield(intiff, tifftag_xresolution, &xresolution); // x解析度

tiffgetfield(intiff, tifftag_yresolution, &yresolution); // y解析度

ntotalframe = tiffnumberofdirectories(intiff); // 獲取檔案總頁數

// read in the possibly multiple strips

stripsize = tiffstripsize(intiff);

stripmax = tiffnumberofstrips(intiff);

buffersize = tiffnumberofstrips(intiff) * stripsize;

if ((buffer = (char*)malloc(buffersize)) == null)

//將fax4資訊分頁寫入到fax3中

for (pagenum = 0; pagenum < ntotalframe; pagenum++)

imageoffset += result;

} tiffsetfield(outiff, tifftag_pagenumber, pagenum); //頁面數

tiffsetfield(outiff, tifftag_imagewidth, width);

tiffsetfield(outiff, tifftag_imagelength, height);

tiffsetfield(outiff, tifftag_bitspersample, bitspersample);

tiffsetfield(outiff, tifftag_samplesperpixel, samplesperpixel);

tiffsetfield(outiff, tifftag_rowsperstrip, height);

tiffsetfield(outiff, tifftag_compression, compression_ccitt_t4); //壓縮格式

tiffsetfield(outiff, tifftag_photometric, photometric_miniswhite);

tiffsetfield(outiff, tifftag_fillorder, fillorder_msb2lsb);

tiffsetfield(outiff, tifftag_planarconfig, planarconfig_contig);

tiffsetfield(outiff, tifftag_xresolution, xresolution); //畫素解析度-x

tiffsetfield(outiff, tifftag_yresolution, yresolution); //畫素解析度-y

tiffsetfield(outiff, tifftag_resolutionunit, resunit_inch);

tiffwriteencodedstrip(outiff, 0, buffer, buffersize); //寫檔案

tiffwritedirectory(outiff);

} //關閉檔案

tiffclose(outiff);

tiffclose(intiff);

free(buffer);

return 1;

}

TIF檔案Thumbnils生成

在專案中希望實現對於tif的thumbnail的獲取,但是如果在獲取tif檔案後實時生成,效能方面較差。因此我採用的方案是檔案獲取一次,生成thumbnail塞入tif檔案中,以提高效能那個。使用開源專案 github net.coobirdgroupid thumbnailatorartifact...

libtiff使用小記

這兩天就跟libtiff庫卯上了,總會遇到奇怪的問題。現在問題或直接或曲折的解決了,一一記錄下來。問題一 tiffsetdirectory函式的使用。目的 交叉讀取tiff中兩頁的每一行,假設第一頁tif為tif 0,第二頁tif為tif 1。我的目的就是先讀tif 0的第i行,然後讀tif 1的第...

libtiff使用小記

這兩天就跟libtiff庫卯上了,總會遇到奇怪的問題。現在問題或直接或曲折的解決了,一一記錄下來。問題一 tiffsetdirectory函式的使用。目的 交叉讀取tiff中兩頁的每一行,假設第一頁tif為tif 0,第二頁tif為tif 1。我的目的就是先讀tif 0的第i行,然後讀tif 1的第...