- 所有已实现的接口:
-
Cloneable
TIFF图像文件目录(IFD)中的字段被定义为由相同数据类型的数值序列陪同的标记号。TIFF 6.0定义了12种数据类型;第13种类型IFD在TIFF规范补充1的TIFF技术说明1中定义。这些TIFF数据类型由Java常量引用,并在内部映射到Java语言数据类型和类型名称如下:
| TIFF数据类型 | Java常量 | Java数据类型 | Java类型名称 |
|---|---|---|---|
BYTE |
TIFFTag.TIFF_BYTE |
byte |
"Byte" |
ASCII |
TIFFTag.TIFF_ASCII |
String |
"Ascii" |
SHORT |
TIFFTag.TIFF_SHORT |
char |
"Short" |
LONG |
TIFFTag.TIFF_LONG |
long |
"Long" |
RATIONAL |
TIFFTag.TIFF_RATIONAL |
long[2] {numerator, denominator} |
"Rational" |
SBYTE |
TIFFTag.TIFF_SBYTE |
byte |
"SByte" |
UNDEFINED |
TIFFTag.TIFF_UNDEFINED |
byte |
"Undefined" |
SSHORT |
TIFFTag.TIFF_SSHORT |
short |
"SShort" |
SLONG |
TIFFTag.TIFF_SLONG |
int |
"SLong" |
SRATIONAL |
TIFFTag.TIFF_SRATIONAL |
int[2] {numerator, denominator} |
"SRational" |
FLOAT |
TIFFTag.TIFF_FLOAT |
float |
"Float" |
DOUBLE |
TIFFTag.TIFF_DOUBLE |
double |
"Double" |
IFD |
TIFFTag.TIFF_IFD_POINTER |
long |
"IFDPointer" |
- 自从:
- 9
- 参见:
-
Constructor Summary
ConstructorsConstructorDescription使用createArrayForType()构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)。使用任意数据构造一个TIFFField。TIFFField(TIFFTag tag, int type, long offset, TIFFDirectory dir) 使用IFD偏移和内容构造一个TIFFField。使用单个非负整数值构造一个TIFFField。 -
Method Summary
Modifier and TypeMethodDescriptionclone()克隆字段及其中包含的所有信息。static ObjectcreateArrayForType(int dataType, int count) 为指定的数据类型创建一个适当的数组。static TIFFFieldcreateFromMetadataNode(TIFFTagSet tagSet, Node node) 从TIFF本机图像元数据节点创建一个TIFFField。byte[]将数据作为未解释的byte数组返回。char[]将TIFFTag.TIFF_SHORT数据作为char数组(无符号16位整数)返回。doublegetAsDouble(int index) 将任何格式的数据作为double返回。double[]将TIFFTag.TIFF_DOUBLE数据作为double数组(64位浮点数值)返回。floatgetAsFloat(int index) 将任何格式的数据作为float返回。float[]将TIFFTag.TIFF_FLOAT数据作为float数组(32位浮点数值)返回。intgetAsInt(int index) 将任何格式的数据作为int返回。int[]将TIFFTag.TIFF_SLONG数据作为int数组(有符号32位整数)返回。longgetAsLong(int index) 将任何格式的数据作为long返回。long[]将TIFFTag.TIFF_LONG或TIFF_IFD_POINTER数据作为long数组(有符号64位整数)返回。将TIFFField作为一个名为"TIFFField"或"TIFFIFD"的节点返回,如TIFF本机图像元数据规范中所述。long[]getAsRational(int index) 将一个TIFFTag.TIFF_RATIONAL数据项作为两个元素的int数组返回。long[][]将TIFFTag.TIFF_RATIONAL数据作为long数组的2元素数组返回。short[]将TIFFTag.TIFF_SSHORT数据作为short数组(有符号16位整数)返回。int[]getAsSRational(int index) 将一个TIFFTag.TIFF_SRATIONAL数据项作为两个元素的int数组返回。int[][]将TIFFTag.TIFF_SRATIONAL数据作为int数组的2元素数组返回。getAsString(int index) 将TIFFTag.TIFF_ASCII值作为String返回。intgetCount()返回字段中存在的数据项数量。getData()返回与字段关联的数据对象的引用。返回关联的TIFFDirectory(如果可用)。getTag()检索与此字段关联的标记。int检索范围在[0,65535]内的标记号。intgetType()返回字段中存储的数据类型。static intgetTypeByName(String typeName) 返回与提供的数据类型名称对应的数据类型常量。static StringgetTypeName(int dataType) 返回提供的数据类型常量的名称。getValueAsString(int index) 返回包含数据项的人类可读版本的String。boolean返回字段是否具有TIFFDirectory。boolean指示与字段关联的值是否为整数数据类型。
-
Constructor Details
-
TIFFField
使用任意数据构造一个TIFFField。type参数必须是tag.isDataTypeOK()返回true的值。data参数必须是适合于TIFF字段类型的Java类型数组。请注意,
TIFFField的值(数据)将始终是实际字段值,而不管该值所需的字节数。尽管TIFF IFD Entry对应的字段值可能实际上包含指向字段值的偏移量,而不是值本身(仅当值适合4字节时才会发生这种情况)。换句话说,字段的值将已经从TIFF流中读取。(在字段表示非基线IFD内容的情况下可能会有例外。在这种情况下,数据将是包含IFD偏移量的long[],并且由getDirectory()返回的TIFFDirectory将是其内容。)- 参数:
-
tag- 与此字段关联的标签。 -
type- 表示字段数据类型的TIFFTag.TIFF_*常量之一,如写入TIFF流。 -
count- 数据值的数量。 -
data- 字段的实际数据内容。 - 抛出:
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果type是提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1且type为TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1且type为TIFF_IFD_POINTER。 -
NullPointerException- 如果data == null。 -
IllegalArgumentException- 如果data是与指定类型不兼容的类的实例。 -
IllegalArgumentException- 如果数据数组的大小不正确。 -
IllegalArgumentException- 如果数据数组的类型为TIFF_LONG、TIFF_RATIONAL或TIFF_IFD_POINTER,并且任何元素为负数或大于0xffffffff。
-
TIFFField
使用createArrayForType()构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)。- 参数:
-
tag- 与此字段关联的标签。 -
type- 表示字段数据类型的TIFFTag.TIFF_*常量之一,如写入TIFF流。 -
count- 数据值的数量。 - 抛出:
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果type是提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1且type为TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1且type为TIFF_IFD_POINTER。 - 参见:
-
TIFFField
使用单个非负整数值构造TIFFField。如果value在[0,0xffff]范围内,则字段将具有类型TIFF_SHORT,如果value在[0x10000,0xffffffff]范围内,则字段将具有类型TIFF_LONG。字段的数量将为1。- 参数:
-
tag- 要与此字段关联的标签。 -
value- 要与此字段关联的值。 - 抛出:
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果value不在[0,0xffffffff]范围内。 -
IllegalArgumentException- 如果value在[0,0xffff]范围内且TIFF_SHORT是TIFFTag的不可接受类型,或者如果value在[0x10000,0xffffffff]范围内且TIFF_LONG是TIFFTag的不可接受类型。
-
TIFFField
使用IFD偏移和内容构造TIFFField。偏移将作为此字段的数据存储为long[] {offset}。目录将不会被克隆。字段的数量将为1。- 参数:
-
tag- 与此字段关联的标签。 -
type-TIFFTag.TIFF_LONG或TIFFTag.TIFF_IFD_POINTER之一的常量。 -
offset- IFD偏移量。 -
dir- 目录。 - 抛出:
-
NullPointerException- 如果tag == null。 -
IllegalArgumentException- 如果type是提供的TIFFTag的不可接受的数据类型。 -
IllegalArgumentException- 如果type既不是TIFFTag.TIFF_LONG也不是TIFFTag.TIFF_IFD_POINTER。 -
IllegalArgumentException- 如果offset <= 0。 -
NullPointerException- 如果dir == null。 - 参见:
-
-
Method Details
-
createFromMetadataNode
从TIFF本机图像元数据节点创建TIFFField。如果节点的"number"属性的值在tagSet中找不到,则将创建一个新的名称为TIFFTag.UNKNOWN_TAG_NAME的TIFFTag并分配给字段。- 参数:
-
tagSet- 字段所属的TIFFTagSet。 -
node- 本机TIFF图像元数据TIFFField节点。 - 返回:
-
一个新的
TIFFField。 - 抛出:
-
IllegalArgumentException- 如果Node参数内容不符合TIFF本机图像元数据格式规范中定义的TIFFField元素结构,或者如果节点属性和数据的组合不符合TIFFField(TIFFTag,int,int,Object)构造函数规范。请注意,此类异常可能会设置原因。
-
getTag
检索与此字段关联的标签。- 返回:
-
关联的
TIFFTag。
-
getTagNumber
public int getTagNumber()检索范围在[0,65535]之间的标签号。- 返回:
- 标签号。
-
getType
public int getType()返回字段中存储的数据类型。对于TIFF 6.0流,该值将等于TIFFTag.TIFF_*常量之一。对于TIFF的未来修订版本,可能存在更高的值。- 返回:
- 字段值的数据类型。
-
getTypeName
返回所提供数据类型常量的名称。- 参数:
-
dataType- 表示字段数据类型的TIFFTag.TIFF_*常量之一,如写入TIFF流。 - 返回:
- 与提供的类型常量对应的类型名称。
- 抛出:
-
IllegalArgumentException- 如果dataType不是TIFFTag.TIFF_*数据类型常量之一。
-
getTypeByName
返回与提供的数据类型名称对应的数据类型常量。如果名称未知,则返回-1。- 参数:
-
typeName- 类型名称。 - 返回:
-
TIFFTag.TIFF_*常量之一,如果名称未被识别,则返回-1。
-
createArrayForType
创建适合指定数据类型的数组。- 参数:
-
dataType-TIFFTag.TIFF_*数据类型常量之一。 -
count- 数组中值的数量。 - 返回:
- 适合指定数据类型的数组。
- 抛出:
-
IllegalArgumentException- 如果dataType不是TIFFTag.TIFF_*数据类型常量之一。 -
IllegalArgumentException- 如果count < 0。 -
IllegalArgumentException- 如果count < 1且type为TIFF_RATIONAL或TIFF_SRATIONAL。 -
IllegalArgumentException- 如果count != 1且type为TIFF_IFD_POINTER。
-
getAsNativeNode
将TIFFField作为节点返回,节点名称为"TIFFField"或"TIFFIFD",如TIFF本机图像元数据规范中所述。仅当hasDirectory()返回true且字段类型为TIFFTag.TIFF_LONG或TIFFTag.TIFF_IFD_POINTER时,节点将命名为"TIFFIFD"。- 返回:
-
名为
"TIFFField"或"TIFFIFD"的Node。
-
isIntegral
public boolean isIntegral()指示字段关联值是否为整数数据类型。- 返回:
- 字段类型是否为整数。
-
getCount
public int getCount()返回字段中存在的数据项数。对于TIFFTag.TIFF_ASCII字段,返回值是String的数量,而不是文件表示中数据的总长度。- 返回:
- 字段中存在的数据项数。
-
getData
返回与字段关联的数据对象的引用。- 返回:
- 字段的数据对象。
-
getAsBytes
public byte[] getAsBytes()将数据作为byte的未解释数组返回。字段的类型必须是TIFFTag.TIFF_BYTE、TIFF_SBYTE或TIFF_UNDEFINED之一。对于
TIFFTag.TIFF_BYTE格式的数据,应用程序在将数据提升为更长的整数类型时必须小心,以避免符号扩展。- 返回:
- 数据作为未解释的字节数组。
- 抛出:
-
ClassCastException- 如果字段不是TIFF_BYTE、TIFF_SBYTE或TIFF_UNDEFINED类型。
-
getAsChars
public char[] getAsChars()将TIFFTag.TIFF_SHORT数据作为char数组(无符号16位整数)返回。- 返回:
-
数据作为
char数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_SHORT类型。
-
getAsShorts
public short[] getAsShorts()将TIFFTag.TIFF_SSHORT数据作为short数组(有符号16位整数)返回。- 返回:
-
数据作为
short数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_SSHORT类型。
-
getAsInts
public int[] getAsInts()将TIFFTag.TIFF_SLONG数据作为int数组(有符号32位整数)返回。- 返回:
-
数据作为
int数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_SHORT、TIFF_SSHORT或TIFF_SLONG类型。
-
getAsLongs
public long[] getAsLongs()将TIFFTag.TIFF_LONG或TIFF_IFD_POINTER数据作为long数组(有符号64位整数)返回。- 返回:
-
数据作为
long数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_LONG或TIFF_IFD_POINTER类型。
-
getAsFloats
public float[] getAsFloats()将TIFFTag.TIFF_FLOAT数据作为float数组(32位浮点值)返回。- 返回:
-
数据作为
float数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_FLOAT类型。
-
getAsDoubles
public double[] getAsDoubles()将TIFFTag.TIFF_DOUBLE数据作为double数组(64位浮点值)返回。- 返回:
-
数据作为
double数组。 - 抛出:
-
ClassCastException- 如果字段不是TIFF_DOUBLE类型。
-
getAsSRationals
public int[][] getAsSRationals()将TIFFTag.TIFF_SRATIONAL数据作为int的2元素数组的数组返回。- 返回:
- 数据作为有符号分数的数组。
- 抛出:
-
ClassCastException- 如果字段不是TIFF_SRATIONAL类型。
-
getAsRationals
public long[][] getAsRationals()将TIFFTag.TIFF_RATIONAL数据作为long的2元素数组的数组返回。- 返回:
- 数据作为无符号分数的数组。
- 抛出:
-
ClassCastException- 如果字段不是TIFF_RATIONAL类型。
-
getAsInt
public int getAsInt(int index) 将数据以int的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE值被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE数据将在[-128, 127]范围内返回。TIFF_UNDEFINED值被视为TIFF_BYTE。TIFF_SLONG、TIFF_LONG、TIFF_FLOAT、TIFF_DOUBLE或TIFF_IFD_POINTER格式的数据将简单地转换为int,可能会出现截断。TIFF_SRATIONAL或TIFF_RATIONAL格式的数据将通过使用双精度算术将分子除以分母,然后转换为int来评估。可能会发生精度丢失和截断。TIFF_ASCII格式的数据将被解析为Double.parseDouble方法,结果转换为int。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为
int。
-
getAsLong
public long getAsLong(int index) 将数据以long的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE数据将在[-128, 127]范围内返回。TIFF_FLOAT和TIFF_DOUBLE中的数据将简单地转换为long,可能会出现截断。TIFF_SRATIONAL或TIFF_RATIONAL格式的数据将通过使用双精度算术将分子除以分母,然后转换为long来评估。可能会发生精度丢失和截断。TIFF_ASCII格式的数据将被解析为Double.parseDouble方法,结果转换为long。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为
long。
-
getAsFloat
public float getAsFloat(int index) 将数据以float的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE数据将在[-128, 127]范围内返回。TIFF_SLONG、TIFF_LONG、TIFF_DOUBLE或TIFF_IFD_POINTER格式的数据将简单地转换为float,可能会出现截断。TIFF_SRATIONAL或TIFF_RATIONAL格式的数据将通过使用双精度算术将分子除以分母,然后转换为float来评估。TIFF_ASCII格式的数据将被解析为Double.parseDouble方法,结果转换为float。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为
float。
-
getAsDouble
public double getAsDouble(int index) 将数据以double的形式返回,可以是任何格式的数据。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号的;即,不会发生符号扩展,返回值将在[0, 255]范围内。TIFF_SBYTE数据将在[-128, 127]范围内返回。TIFF_SRATIONAL或TIFF_RATIONAL格式的数据将通过使用双精度算术将分子除以分母来评估。TIFF_ASCII格式的数据将被解析为Double.parseDouble方法。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为
double。
-
getAsString
将TIFFTag.TIFF_ASCII值作为String返回。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为一个
String。 - 抛出:
-
ClassCastException- 如果字段不是类型为TIFF_ASCII。
-
getAsSRational
public int[] getAsSRational(int index) 返回一个TIFFTag.TIFF_SRATIONAL数据项作为一个包含两个int的数组。- 参数:
-
index- 数据的索引。 - 返回:
- 给定索引处的数据作为有符号有理数。
- 抛出:
-
ClassCastException- 如果字段不是类型为TIFF_SRATIONAL。
-
getAsRational
public long[] getAsRational(int index) 返回一个TIFFTag.TIFF_RATIONAL数据项作为一个包含两个int的数组。- 参数:
-
index- 数据的索引。 - 返回:
- 给定索引处的数据作为无符号有理数。
- 抛出:
-
ClassCastException- 如果字段不是类型为TIFF_RATIONAL。
-
getValueAsString
返回一个包含数据项的人类可读版本的String。类型为TIFFTag.TIFF_RATIONAL或TIFF_SRATIONAL的数据表示为由一个'/'字符分隔的两个整数。如果TIFFTag.TIFF_RATIONAL或TIFF_SRATIONAL的分子是分母的整数倍,则该值表示为"q/1",其中q是分子和分母的商。- 参数:
-
index- 数据的索引。 - 返回:
-
给定索引处的数据作为一个
String。 - 抛出:
-
ClassCastException- 如果字段不是合法字段类型之一。
-
hasDirectory
public boolean hasDirectory()返回字段是否具有TIFFDirectory。- 返回:
- 如果 getDirectory() 返回非空,则返回 true。
-
getDirectory
返回关联的TIFFDirectory,如果可用。如果未设置目录,则将返回null。- 返回:
- TIFFDirectory 实例或 null。
-
clone
克隆字段及其中包含的所有信息。- 覆盖:
-
clone在类Object - 返回:
-
此
TIFFField的克隆。 - 抛出:
-
CloneNotSupportedException- 如果无法克隆实例。 - 参见:
-