gpt4 book ai didi

objective-c - 如何使用元数据生成 tiff 文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:02 24 4
gpt4 key购买 nike

我必须生成一个包含许多图像和元数据的 tiff 文件。我发现可以将 png 或 jpg 转换为 tiff here :但是如何添加元数据呢? ImageMagic for iOS 有可能吗?谢谢

编辑:最后我在 iphone 上安装了 ImageMagick,但我没有找到如何使用 magickwand 创建多页 tiff ....也可以直接使用 libtiff:我找到了如何用 C 代码创建一个空的简单页面

char buffer[25 * 144] = { /* boring hex omitted */ };
TIFF *image;
char szFileName[512];


strcpy(szFileName, getenv("HOME"));
strcat(szFileName, "/Documents/");
strcat(szFileName, "output.tif");
// Open the TIFF file
if((image = TIFFOpen(szFileName, "w")) == NULL)
{
printf("Could not open output.tif for writing\n");
}

// We need to set some values for basic tags before we can add any data
TIFFSetField(image, TIFFTAG_IMAGEWIDTH, 25 * 8);
TIFFSetField(image, TIFFTAG_IMAGELENGTH, 144);
TIFFSetField(image, TIFFTAG_BITSPERSAMPLE, 1);
TIFFSetField(image, TIFFTAG_SAMPLESPERPIXEL, 1);
TIFFSetField(image, TIFFTAG_ROWSPERSTRIP, 144);

TIFFSetField(image, TIFFTAG_COMPRESSION, COMPRESSION_CCITTFAX4);
TIFFSetField(image, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
TIFFSetField(image, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
TIFFSetField(image, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);

TIFFSetField(image, TIFFTAG_XRESOLUTION, 150.0);
TIFFSetField(image, TIFFTAG_YRESOLUTION, 150.0);
TIFFSetField(image, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);

// Write the information to the file
TIFFWriteEncodedStrip(image, 0, buffer, 25 * 144);

// Close the file
TIFFClose(image);

那么有没有关于如何在创建的tiff文件中插入图像数据的c教程?以及如何创建多页 tiff?谢谢

最佳答案

我使用过 LibTIFF - 但不是直接在 iOS 上使用。但是,它是一个普通的旧 C 库,所以应该没问题。我确实注意到 Apple Image I/O 框架据说支持图像元数据(但我自己没有使用过)。参见链接 here - 但对于多页 TIFF 或定制标签似​​乎没有任何意义,只有标准化的相机信息标签......

但是,在纯 C 中,添加您自己的定制标签通常最简单,只需修改核心库并将它们添加到主头文件:tiff.h 以及一些包装函数即可。

请参阅“Adding New Tags”部分

然后您可以像使用其他 TIFF 标签一样引用/使用它们,例如我为加载一些嵌入式 xml 数据所做的工作:

TIFFGetField(lp_tif,MYTAG, &lp_xml)

当然,您随后必须发布/维护修改后的 libTIFF 版本(新的“公共(public)”标签必须通过 Adob​​e 的流程)。

您发布的示例非常适合编写单个 TIFF 文件(即设置所有标签,然后将缓冲区的内容写入文件)。对于多页 TIFF - 更进了一步。您需要了解图像文件目录 (IFD) 的概念。我建议看看这个 link进一步了解函数的使用:

TIFFWriteDirectory()
TIFFReadDirectory()

注意:每个 TIFF 文件都应该有一个目录,以便将所有标签和图像数据关联在一起。

最后,您当然可以更进一步!如果您知道要创建的 TIFF 文件的固定结构 - 只需 write the bytes甚至不使用 LibTIFF。

关于objective-c - 如何使用元数据生成 tiff 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9692500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com