本文主要是介绍Tiff超高压缩图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用libtiff库,压缩8位深度二值化图片至1位深度
path = "C:\\Users\\CodeFlag\\Desktop\\input_0_sel.png";//Mat img = imread(path,IMREAD_COLOR);
//if(img.channels()>1)
// cvtColor(img,img,CV_BGR2GRAY);
//cv::threshold(img, img, 0, 255, CV_THRESH_BINARY+CV_THRESH_OTSU);
//TIFF *imageWrite = TIFFOpen((path+"out1.tif").c_str(), "w");
//if (imageWrite)
//{
// TIFFSetField(imageWrite, TIFFTAG_IMAGEWIDTH, img.cols);
// TIFFSetField(imageWrite, TIFFTAG_IMAGELENGTH, img.rows);
// TIFFSetField(imageWrite, TIFFTAG_COMPRESSION, COMPRESSION_CCITT_T6);
// TIFFSetField(imageWrite, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
// TIFFSetField(imageWrite, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
// TIFFSetField(imageWrite, TIFFTAG_BITSPERSAMPLE, 1);
// TIFFSetField(imageWrite, TIFFTAG_SAMPLESPERPIXEL, 1);
// uchar *bits = (uchar*)img.data;
// int widthnew = 0;
// widthnew = ((img.cols+7) / 8);
// uchar * data = new uchar[widthnew];
// for (int i = 0; i < img.rows; i++)
// {
// memset(data, 0, widthnew);
// for (int j = 0; j < widthnew; j++)
// {
// uchar temp_data = 0;
// for (int k = 0; k < 8; k++)
// {
// int temp_value = 0;
// if ((8*j+k)
// {
// temp_value = 1 << (7 - k);
// temp_data += temp_value;
// }
// }
// data[j] = temp_data;// }
// TIFFWriteScanline(imageWrite, &data[0], i, 0);
// }
// TIFFClose(imageWrite);
//}
//else
//{
// std::cout << "Open file error!" << std::endl;
// exit(1);
//}
这篇关于Tiff超高压缩图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!