[tiff]文件写多页16位灰度图像

=====================码上见==========================

void CreatTiffFileGRAY(const char *FileName, unsigned char *Buf, uint32 width, uint32 height)
{
    int image_height = height;
    int image_width = width;
    DWORD* data = (DWORD*)Buf;
    TIFF *imageTest = TIFFOpen(FileName, "w");
    if (imageTest == NULL) {
        printf("Could not open output.tif for writing\n");
        cout << "open is failed.\n";
        system("pause");
        exit(1);
    }
    int NPAGE = 6;//可以是1
    for (size_t i = 0; i < NPAGE; i++)
    {
        TIFFSetField(imageTest, TIFFTAG_SUBFILETYPE, FILETYPE_PAGE);
        /* Set the page number */
        TIFFSetField(imageTest, TIFFTAG_PAGENUMBER, i, NPAGE);

        //上面两句不写测着也可以

        TIFFSetField(imageTest, TIFFTAG_IMAGEWIDTH, image_width);
        TIFFSetField(imageTest, TIFFTAG_IMAGELENGTH, image_height);
        TIFFSetField(imageTest, TIFFTAG_BITSPERSAMPLE, 16);// 可以改到8,数据类型要改
        TIFFSetField(imageTest, TIFFTAG_SAMPLESPERPIXEL, 1);//可以改到3,存储彩色图像
        TIFFSetField(imageTest, TIFFTAG_ROWSPERSTRIP, image_height);
        TIFFSetField(imageTest, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
        TIFFSetField(imageTest, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);//PHOTOMETRIC_RGB
        TIFFSetField(imageTest, TIFFTAG_ORIENTATION, ORIENTATION_BOTLEFT);
        /* It is good to set resolutions too (but it is not nesessary) */
        auto xres = 100; auto yres = 100;
        TIFFSetField(imageTest, TIFFTAG_XRESOLUTION, xres);
        TIFFSetField(imageTest, TIFFTAG_YRESOLUTION, yres);
        TIFFSetField(imageTest, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);


        for (int j = 0; j < image_height; j++)
            TIFFWriteScanline(imageTest, data + j * image_width, j, i);

        TIFFWriteDirectory(imageTest);
    }

    TIFFClose(imageTest);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值