SAVEFILEOPTION

类型定义结构体_SAVEFILEOPTIONL_UINTuStructSize;L_INTReserved1;L_INTReserved2;L_UINT国旗;L_INT通过;L_INTPageNumber;L_INTGlobalWidth;L_INTGlobalHeight;L_UINTGlobalLoop;L_COLORREFGlobalBackground;L_RGBQUADGlobalPalette [256];L_UINTStampWidth;L_UINTStampHeight;L_UINTStampBitsL_IFDTYPEIFD;L_TCHARszPassword [255];PHOTMTRICINTERPPhotometricInterpretation;L_UINTTileWidth;L_UINTTileHeight;L_UINTFlags2;} SAVEFILEOPTION, * pSAVEFILEOPTION;

SAVEFILEOPTION结构指定用于写入映像文件的额外选项。看到L_GetDefaultSaveFileOption有关默认保存选项的信息。

成员

uStructSize

的大小SAVEFILEOPTION结构。这应该是sizeof(SAVEFILEOPTION)。请确保填充该成员。

Reserved1

保留以备将来使用。通过0。

Reserved2

保留以备将来使用。通过0。

旗帜

下列标志之一。(使用位或指定多个值。)另请参阅Flags2成员用于其他标志。

价值 意义
ESO_REVERSEBITS [0x00000001]当写入CCITT组3和组4文件和RAW未压缩数据时,反转位顺序,使最低有效位(LSB)在前面。
ESO_NOSUBFILETYPE [0x00000002]在写入任何TIFF文件时阻止写入子文件类型TIFF标记。
ESO_GLOBALBACKGROUND [0x00000004]使用GlobalBackground字段指定的全局背景色保存GIF文件。
ESO_GLOBALPALETTE [0x00000008]使用GlobalPalette字段指定的全局调色板保存GIF文件。
ESO_INTERLACED [0x00000010]将GIF文件保存为隔行文件。
ESO_GLOBALLOOP [0x00000020]在加载动画文件时启用循环。要使用GlobalLoop字段,该标志必须打开。
ESO_NOPALETTE [0x00000040]将TIFF或PNG文件保存为灰度,不带调色板。
ESO_SAVEWITHSTAMP [0x00000080]使CMP、JPEG或Exif文件除正常图像外,还保存一个戳(缩略图)。
ESO_FIXEDPALETTESTAMP [0x00000100]使用固定的调色板保存CMP或JPEG戳图像。
ESO_YCCSTAMP [0x00000200]使用YCbCr颜色空间保存Exif邮票图像。
ESO_REPLACEPAGE [0x00000400]替换PageNumber指定的页面。
ESO_INSERTPAGE [0x00000800]将新页面插入到PageNumber指定的页面之前。
ESO_JPEGSTAMP [0x00001000]保存JPEG压缩邮票。
ESO_DISABLEMMX [0x00002000]不要使用MMX优化代码。
ESO_SAVEOLDJTIF [0x00004000]写入旧样式的JTIF文件。
ESO_NOPAGENUMBER [0x00008000]不要更新和保存与多页TIFF文件的页相关联的PageNumber标记。
ESO_DISABLEP3 [0x00010000]不要使用p3特定的优化代码。
ESO_USEIFD [0x00020000]使用IFD偏移量。
ESO_MOTOROLAORDER [0x00040000]尽可能以摩托罗拉字节顺序保存文件。
ESO_WITHOUTTIMESTAMP [0x00080000]保存没有时间戳的文件。
ESO_PDF_TEXT_ENCODING_NONE [0x00000000]图像数据不使用文本编码。
ESO_PDF_TEXT_ENCODING_ASCII_BASE85 [0x00100000] PDF,图像数据使用ASCII BASE 85文本编码。
ESO_PDF_TEXT_ENCODING_ASCII_HEX [0x00200000] PDF, ASCII HEX文本编码用于图像数据。
ESO_PDF_ENCODING_MASK [0x00300000]标志的掩码用于PDF文本编码。
ESO_PDF_SAVE_USE_BITMAP_DPI [0x01000000]保存PDF文件时使用位图DPI计算页面尺寸。
ESO_PAD4 [0x00400000]将每一行填充为4字节的倍数。(仅提供原始数据)。
ESO_PLT_BEZIER_CURVES [0x00800000] PLT filter应该保存bezier曲线。
ESO_PDF_SAVE_USE_BITMAP_DPI [0x01000000]保存PDF文件时使用位图DPI计算页面尺寸。
ESO_PHOTOMETRICINTERPRETATIONVALID [0x02000000]保存TIFF文件时使用PhotometricInterpretation。
ESO_TILEINFOVALID [0x04000000]保存TIFF文件时使用TileWidth和TileHeight成员。
ESO_USEDITHERINGMETHOD [0x08000000]使用BITMAPHANDLE中的DitheringMethod。
ESO_PRESERVEPALETTE [0x10000000]保存TIFF CCITT文件时保留面板(可能会降低压缩比)。
ESO_PDF_SAVE_LOW_MEMORY_USAGE [0x20000000]在创建JPEG或传真压缩的PDF文件时尝试使用更少的内存。
ESO_GENERATEGLOBALPALETTE [0x40000000]保存GIF文件时生成全局调色板。
ESO_USEPREDICTOR [0x80000000]保存LZW数据时使用预测器。这是针对8 bpp或以上的TIF LZW或原始LZW数据。如果LZW数据小于8 bpp,该标志将被忽略。

通过

保存JPEG或LEAD CMP文件时的传递次数(扫描图像)。(保存交错的PNG文件时不使用此值。)

保存时可能的值

价值 意义
任何正数 将文件保存为具有指定次数的递进文件。
0 将文件保存为普通的JPEG或LEAD CMP文件(而不是累进文件)。
任何负数 将文件保存为具有LEADTOOLS默认次数的累进文件。

保存非渐进式文件时可能的值

价值 意义
0 用固定的霍夫曼表保存文件(保存更快,压缩更低)。
< > 0 保存文件与优化霍夫曼表(2-pass压缩,较低的速度,较高的压缩)。

PageNumber

多页文件的页码,该文件可以包含多张图像。保存文件时,任何大于1的值都会导致页面被追加到文件末尾。有关多页文件的更多信息,请参阅多页文件格式

GlobalWidth

多页GIF文件中图像的宽度。

GlobalHeight

多页GIF文件中图像的高度。

GlobalLoop

播放动画时的循环计数。使用0表示连续循环。如果没有循环,请关闭Flags字段中的ESO_GLOBALLOOP标志。

GlobalBackground

多页GIF文件中图像的背景色。该字段仅在Flags字段中设置了ESO_GLOBALBACKGROUND标志时使用。指定一个COLORREF值,例如Windows RGB宏的返回值,或使用PALETTEINDEX宏指定调色板颜色。

GlobalPalette

调色板用于多页GIF文件中的图像。该字段仅在Flags字段中设置了ESO_GLOBALPALETTE标志时使用。

StampWidth

要保存的邮票图像的宽度(以像素为单位)。只有在Flags字段中设置了ESO_SAVEWITHSTAMP标志,才会保存一个邮票。

StampHeight

要保存的邮票图像的高度(以像素为单位)。只有在Flags字段中设置了ESO_SAVEWITHSTAMP标志,才会保存一个邮票。

StampBits

要保存的邮票图像的每像素位数。只有在Flags字段中设置了ESO_SAVEWITHSTAMP标志,才会保存一个邮票。

IFD

页开始位置的TIFF文件中的偏移量。这作为将页面保存到大型TIFF文件的参考页。根据TIFF规范,第一个IFD的最小值为8。

szPassword

保存加密文件的密码。

PhotometricInterpretation

(仅限TIFF)应保存在文件中的光度解释,而不是常规值。仅当设置了ESO_PHOTOMETRICINTERPRETATIONVALID时使用。

TileWidth

保存TIFF文件时使用的平铺的宽度。该值以像素为单位。仅当设置了ESO_TILEINFOVALID时使用。如果需要,可以稍微修改这个值。有关模式的详细信息,请参阅下面的说明。

TileHeight

保存TIFF文件时使用的平铺的高度。该值以像素为单位。仅当设置了ESO_TILEINFOVALID时使用。如果需要,可以稍微修改这个值。有关模式的详细信息,请参阅下面的说明。

Flags2

下列任何标志(使用位或指定多个值。)另请参阅旗帜成员用于其他标志。

价值 意义
ESO2_NITF [0x00000001]保存与NITF要求兼容的文件。此标志在内部使用。
ESO2_SAVEPLANAR [0x00000002]将TIF CMYK图像保存为平面(而不是块状)。
ESO2_NOLZWAUTOCLEAR [0x00000004] LZW压缩时不要自动插入CLEAR码。
ESO2_ALPHAINIT [0x00000010]将32位或64位彩色图像的alpha通道初始化为所有的alpha通道(8位alpha通道为0xFF, 16位alpha通道为0xFFFF)。如果没有这个标志,创建的alpha通道将初始化为0。
ESO2_XPS_SAVE_USE_BITMAP_DPI [0x00000080]保存XPS文件时使用位图DPI计算页面尺寸。
ESO2_PDFA_PROFILE [0x00000100]保存为PDF时,将PDF文件保存为PDF/A格式。
ESO2_PDF_V13 [0x00004000]保存为PDF时,将PDF文件保存为PDF v1.3。
ESO2_PDF_V14 [0x00000200]保存为PDF时,将PDF文件保存为PDF v1.4。
ESO2_PDF_V15 [0x00000400]保存为PDF时,将PDF文件保存为PDF v1.5。
ESO2_PDF_V16 [0x00002000]保存为PDF时,将PDF文件保存为PDF v1.6。
ESO2_PDF_V17 [0x00008000]保存为PDF时,将PDF文件保存为PDF v1.7。
ESO2_ENDWITH3EOL [0x00000800]结束用3个EOL(00 01 00 01 00 01)代替EOL EOFB(00 01 00 10 01)传真G3 (1D/2D)文件。
ESO2_OPTIMIZEDHUFFMAN [0x00001000]保存带有优化霍夫曼表的JPEG文件。
ESO2_NOGRAYCONVERT [0x00010000]保存为JPX时,保存12/16位灰度数据,可处理LowBit, HighBit等
ESO2_BIGTIFF [0x00020000]使用BigTiff格式保存TIFF文件,允许TIFF文件超过4GB。
ESO2_PDF_LINEARIZED [0x00080000]保存线性化的PDF文件(web优化)。

评论

pSAVEFILEOPTION指向SAVEFILEOPTION结构。其中函数参数类型为pSAVEFILEOPTION,声明一个SAVEFILEOPTION变量,更新结构的字段,并在参数中传递变量的地址。只有在程序需要指针时才需要声明pSAVEFILEOPTION变量。

保存邮票图像适用于以下格式:LEAD、JFIF、LEAD2JFIF、LEAD1JFIF、FILE_EXIF、FILE_EXIF_YCC和FILE_EXIF_JPEG。有关简短描述,请参阅文件格式:JPEG和铅压缩(JPG, J2K, JP2, JPM, CMP和CMW)

在FILE_EXIF或FILE_EXIF_YCC文件中保存戳记图像时,戳记将作为多页文件的第二页追加。

在Exif JPG文件中保存邮票图像时,邮票大小限制为160x120x24。类的StampWidth、StampHeight和StampBits成员在保存Exif文件时SAVEFILEOPTION结构将被忽略,160 (StampWidth), 120 (StampHeight)和24 (StampBits)将被使用。这一限制是为了符合日本数码相机制造商实施的ExifR98互操作性规则。如果超过了这些大小限制中的任何一个,save函数将返回一个错误(ERROR_INVALID_STAMP_SIZE)。

当使用未压缩(TIFF) Exif文件时,邮票大小为(宽x高x 24 bpp),没有宽度和高度限制。

在LEAD、JFIF、LEAD2JFIF或LEAD1JFIF文件中保存戳记图像时,戳记的宽度和高度都不能超过255像素。此外,还适用以下总体大小限制:

(宽*高)+ 778。

(宽*高* 3)+ 10。

如果超过了这些大小限制中的任何一个,save函数将返回一个错误(ERROR_INV_RANGE)。

要加载邮票图像,请使用L_ReadFileStamp函数。

笔记

默认情况下,没有设置ESO_NOPAGENUMBER。因此,所有TIFF文件都使用更新后的PageNumber标记保存。这是类f兼容性所必需的。

当LEADTOOLS保存TIFF文件并写入PageNumber标记时,它必须在追加、插入或删除页面时进行额外的处理,如下所示:

  1. 当追加一个页时,更新第一页的PageNumber标记以反映页数的变化。
  2. 插入页面时,将在插入页面之后的页面的PageNumber标记将被更新,以反映页面索引的变化。另外,更新第一个文件的PageNumber标记,以反映页面数量的增加。
  3. 当删除一个页面(通过调用L_DeletePage)时,将更新第一页的PageNumber标记,以反映页面数量的变化。此外,在被删除的页面之后的所有页面的PageNumber也被更新,以反映它们的新索引。

这些更新通常只需要很短的时间。但是,当将页面插入到包含数千张图像的TIFF文件中时,这些更新可能会很耗时。在这种情况下,可以通过禁用此功能来获得一些速度。

如果设置了ESO_NOPAGENUMBER,那么L_DeletePage将不会更新任何页面的PageNumber标记。

如果没有设置ESO_NOPAGENUMBER,那么LEADTOOLS将写入PageNumber标记,因此不要调用L_SetTag设置此标签(标签297)。

当保存RAW未压缩数据时,可以通过传递ESO_REVERSEBITS标志来反转每个字节中的位。此外,可以通过传递ESO_PAD4标志对每一行数据进行填充,使其长度为四个字节的倍数。方法可将原始数据保存在文件中的任意偏移位置L_SaveFileOffset函数。

平铺TIFF图像

注意:有关更快地加载和保存大型TIFF文件的更多信息,请参阅加载和保存大TIFF/BigTIFF文件。

保存TIFF文件时,可以控制保存在文件中的磁贴或条带的大小。

一些图形包不能加载TIFF文件,除非文件保存为特定的平铺或条带大小。LEADTOOLS可以加载任何条带和平铺大小的文件,因此在保存将使用LEADTOOLS加载的文件时,不需要修改这些设置。

如果未设置ESO_TILEINFOVALID,则TileWidth而且TileHeight委员会成员SAVEFILEOPTION结构被忽略。在这种情况下,位图将像在以前版本的LEADTOOLS中一样保存。

如果TileWidth小于或等于位图宽度,则位图将保存为磁贴。如果TileWidth大于位图宽度,则位图将保存为条带。

如果位图保存为磁贴,TileHeight控制瓷砖的高度。

如果位图保存为条带,TileHeight控制条带的高度。通过设置,可以将图像保存为一条带TileHeight到大于或等于位图高度的值。

某些压缩(如JPEG或CMP)对保存文件时使用的磁贴的大小有限制。例如,JPEG压缩要求瓷砖宽度和高度是8或16的倍数,这取决于所选择的子采样。对于这样的文件,指定一个特定的块大小(通过设置ESO_TILEINFOVALID和TileWidth和TileHeight),请求的块大小可能会更新到最近的可接受的块大小。

请注意:当使用Flags和Flags2成员时,注意不要混淆Flags的位置。所有的EXO_XXX标志都应该在flags成员中设置,而ESO2_XXX标志应该在Flags2成员中设置。

在保存TIFF LZW文件时,可以使用ESO2_NOLZWAUTOCLEAR来保存与一些有bug的LZW解码器兼容的文件,这些解码器不能处理早期的CLEAR代码。一些IBM解码器已知有这个问题。除非设置了这个标志,否则它们不会解码LEAD TIFF LZW文件。默认情况下没有设置该标志,它允许LEADTOOLS插入CLEAR LZW代码,并在压缩比不够时重置LZW压缩引擎。

IFD补偿

类的IFD成员来传递IFD偏移量时,由于技术原因,适用于以下限制SAVEFILEOPTION结构和PageNumber设置为1:

  1. 不可能向该IFD添加标签、注释或地理键。可以在这个IFD中更新现有的标签、注释或geokey。
  2. 不可能替换此IFD指示的TIFF页。
  3. 不能在此IFD之前添加页面。
  4. 无法删除此IFD所指示的页面。

但是,可以向指定IFD后面的IFD添加标记、注释或geokey(例如,如果PageNumber为>= 2)。也可以替换或删除指定IFD后面的页面,并在该IFD后面插入一个页面。

如果设置了ESO2_BIGTIFF标志,则保存的文件或页面将使用带有64位文件偏移量的BigTIFF格式,而不是常规TIFF文件使用的32位文件偏移量。传递给保存函数的格式决定使用哪种压缩和颜色空间。例如,如果在使用FILE_TIF_J2K格式时,保存的文件或页面将使用J2K压缩,但是使用BigTIFF文件格式而不是TIFF文件格式。BigTIFF文件格式不太常见,但可用于保存> 4GB的文件。

TIFF和BigTIFF页面不能混合在同一个文件中。例如,只能将TIFF页附加到TIFF文件,将BigTIFF页附加到BigTIFF文件格式。尝试将TIFF页面追加/插入BigTIFF文件或反之亦然,将生成ERROR_FORMAT_MISMATCH错误。

要确定一个文件是TIFF还是BigTIFF,调用L_FileInfo函数并检查FILEINFO.Flags中是否设置了FILEINFO_BIGTIFF标志。

使用SAVEFILEOPTION的函数列表

该结构可用于以下函数:

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。