- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFField
-
- 实现的所有接口
-
Cloneable
public final class TIFFField extends Object implements Cloneable
表示TIFF 6.0图像文件目录中的字段的类。TIFF图像文件目录(IFD)中的字段被定义为带有相同数据类型的值序列的标签号。 TIFF 6.0定义了12种数据类型; 第13种类型
TIFF Data Type to Java Data Type Mapping TIFF Data Type Java Constant Java Data Type Java Type NameIFD
在TIFF规范补充说明1的TIFF技术说明1中定义。这些TIFF数据类型由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
- 另请参见:
-
TIFFDirectory
,TIFFTag
-
-
构造方法摘要
构造方法 构造器 描述 TIFFField(TIFFTag tag, int type, int count)
使用createArrayForType()
构造数据数组,并使用提供的参数和创建的数组调用TIFFField(TIFFTag,int,int,Object)
。TIFFField(TIFFTag tag, int type, int count, Object data)
使用任意数据构造TIFFField
。TIFFField(TIFFTag tag, int type, long offset, TIFFDirectory dir)
构造一个具有IFD偏移量和内容的TIFFField
。TIFFField(TIFFTag tag, long value)
构造具有单个非负整数值的TIFFField
。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 TIFFField
clone()
克隆该字段及其中包含的所有信息。static Object
createArrayForType(int dataType, int count)
创建适合指定数据类型的数组。static TIFFField
createFromMetadataNode(TIFFTagSet tagSet, Node node)
从TIFF本机映像元数据节点创建TIFFField
。byte[]
getAsBytes()
将数据作为未解释的数组byte
返回。char[]
getAsChars()
以char
s(无符号16位整数)的数组形式返回TIFFTag.TIFF_SHORT
数据。double
getAsDouble(int index)
以任何格式返回数据,如double
。double[]
getAsDoubles()
以double
s(64位浮点值)的数组形式返回TIFFTag.TIFF_DOUBLE
数据。float
getAsFloat(int index)
以任何格式返回数据为float
。float[]
getAsFloats()
以float
(32位浮点值)的数组形式返回TIFFTag.TIFF_FLOAT
数据。int
getAsInt(int index)
以任何格式返回数据为int
。int[]
getAsInts()
以int
s(带符号的32位整数)的数组形式返回TIFFTag.TIFF_SLONG
数据。long
getAsLong(int index)
以任何格式返回数据为long
。long[]
getAsLongs()
以long
(带符号的64位整数)的数组形式返回TIFFTag.TIFF_LONG
或TIFF_IFD_POINTER
数据。Node
getAsNativeNode()
返回TIFFField
作为名为"TIFFField"
或"TIFFIFD"
的节点,如TIFF本机图像元数据规范中所述。long[]
getAsRational(int index)
返回TIFFTag.TIFF_RATIONAL数据项作为两元素的int数组。long[][]
getAsRationals()
将TIFFTag.TIFF_RATIONAL
数据作为long
s的2元素数组的数组long
。short[]
getAsShorts()
以short
s(带符号的16位整数)的数组形式返回TIFFTag.TIFF_SSHORT
数据。int[]
getAsSRational(int index)
返回TIFFTag.TIFF_SRATIONAL
作为一个二单元阵列的数据项int
秒。int[][]
getAsSRationals()
将TIFFTag.TIFF_SRATIONAL
数据作为int
s的2元素数组的数组int
。String
getAsString(int index)
返回TIFFTag.TIFF_ASCII
值String
。int
getCount()
返回字段中存在的数据项数。Object
getData()
返回对与该字段关联的数据对象的引用。TIFFDirectory
getDirectory()
返回关联的TIFFDirectory
(如果可用)。TIFFTag
getTag()
检索与此字段关联的标记。int
getTagNumber()
检索范围[0,65535]
的标记号。int
getType()
返回字段中存储的数据类型。static int
getTypeByName(String typeName)
返回与提供的数据类型名称对应的数据类型常量。static String
getTypeName(int dataType)
返回提供的数据类型常量的名称。String
getValueAsString(int index)
返回String
其中包含人类可读的数据项版本。boolean
hasDirectory()
返回该字段是否具有TIFFDirectory
。boolean
isIntegral()
指示与字段关联的值是否为整数数据类型。
-
-
-
构造方法详细信息
-
TIFFField
public TIFFField(TIFFTag tag, int type, int count, Object data)
使用任意数据构造TIFFField
。type
参数必须是tag.isDataTypeOK()
返回true
的值。data
参数必须是适合TIFF字段类型的Java类型的数组。请注意,无论该值所需的字节数如何,
TIFFField
的值(数据)始终为实际字段值。 尽管事实上对应于该字段的TIFF IFD条目实际上可能包含对字段值的偏移而不是值本身(当且仅当该值适合4个字节时才发生),这是这种情况。 换句话说,该字段的值已经从TIFF流中读取。 (当该字段表示非基线IFD的内容时,可能会发生这种情况的例外。在这种情况下,数据将是long[]
其中包含IFD的偏移量,TIFFDirectory
返回的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
public TIFFField(TIFFTag tag, int type, int count)
使用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(TIFFTag,int,int,Object)
-
TIFFField
public TIFFField(TIFFTag tag, long value)
构造具有单个非负整数值的TIFFField
。 该字段的类型为TIFF_SHORT
如果value
为[0,0xffff]
,并键入TIFF_LONG
如果value
为[0x10000,0xffffffff]
。 该领域的统计将是统一的。- 参数
-
tag
- 要与此字段关联的标记。 -
value
- 与此字段关联的值。 - 异常
-
NullPointerException
- 如果tag == null
。 -
IllegalArgumentException
- 如果value
不在[0,0xffffffff]
。 -
IllegalArgumentException
-如果value
是[0,0xffff]
和TIFF_SHORT
是不可接受的类型为TIFFTag
,或者如果value
是[0x10000,0xffffffff]
和TIFF_LONG
是不可接受的类型为TIFFTag
。
-
TIFFField
public TIFFField(TIFFTag tag, int type, long offset, TIFFDirectory dir)
构造具有IFD偏移和内容的TIFFField
。 偏移量将作为该字段的数据存储为long[] {offset}
。 该目录不会被克隆。 该领域的统计将是统一的。- 参数
-
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
。 - 另请参见:
-
TIFFField(TIFFTag,int,int,Object)
-
-
方法详细信息
-
createFromMetadataNode
public static TIFFField createFromMetadataNode(TIFFTagSet tagSet, Node node)
从TIFF本机映像元数据节点创建TIFFField
。 如果该值"number"
中没有找到该节点的属性tagSet
那么新TIFFTag
名称为TIFFTag.UNKNOWN_TAG_NAME
将被创建并分配到外地。- 参数
-
tagSet
-该TIFFTagSet
到的TIFFTag
领域的所属。 -
node
- 本机TIFF图像元数据TIFFField
节点。 - 结果
-
新
TIFFField
。 - 异常
-
IllegalArgumentException
-如果Node
参数含量不粘附到TIFFField
由定义的元件结构TIFF native image metadata format specification ,或如果节点属性和数据的组合不是每法律TIFFField(TIFFTag,int,int,Object)
构造规范。 请注意,可能会在此类异常上设置原因。
-
getTag
public TIFFTag getTag()
检索与此字段关联的标记。- 结果
-
相关
TIFFTag
。
-
getTagNumber
public int getTagNumber()
检索范围[0,65535]
的标记号。- 结果
- 标签号。
-
getType
public int getType()
返回字段中存储的数据类型。 对于TIFF 6.0流,该值将等于TIFFTag.TIFF_*
常量之一。 对于TIFF的未来版本,可以使用更高的值。- 结果
- 字段值的数据类型。
-
getTypeName
public static String getTypeName(int dataType)
返回提供的数据类型常量的名称。- 参数
-
dataType
-TIFFTag.TIFF_*
常量之一,指示写入TIFF流的字段的数据类型。 - 结果
- 与提供的类型常量对应的类型名称。
- 异常
-
IllegalArgumentException
- 如果dataType
不是TIFFTag.TIFF_*
数据类型常量之一。
-
getTypeByName
public static int getTypeByName(String typeName)
返回与提供的数据类型名称对应的数据类型常量。 如果名称未知,将返回-1
。- 参数
-
typeName
- 类型名称。 - 结果
-
如果名称未被识别,
TIFFTag.TIFF_*
常量之一或-1
。
-
createArrayForType
public static Object createArrayForType(int dataType, int count)
创建适合指定数据类型的数组。- 参数
-
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
public Node getAsNativeNode()
将TIFFField
作为名为"TIFFField"
或"TIFFIFD"
的节点返回,如TIFF本机映像元数据规范中所述。 该节点将被命名为"TIFFIFD"
当且仅当hasDirectory()
个回报true
和字段的类型为TIFFTag.TIFF_LONG
或TIFFTag.TIFF_IFD_POINTER
。- 结果
-
Node
名为"TIFFField"
或"TIFFIFD"
。
-
isIntegral
public boolean isIntegral()
指示与字段关联的值是否为整数数据类型。- 结果
- 字段类型是否是完整的。
-
getCount
public int getCount()
返回字段中存在的数据项数。 对于TIFFTag.TIFF_ASCII
字段,返回的值是String
s的数量,而不是文件表示中的数据总长度。- 结果
- 字段中存在的数据项数。
-
getData
public Object 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()
以char
s(无符号16位整数)的数组形式返回TIFFTag.TIFF_SHORT
数据。- 结果
-
数据为
char
的数组。 - 异常
-
ClassCastException
- 如果该字段不是类型TIFF_SHORT
。
-
getAsShorts
public short[] getAsShorts()
以short
(带符号的16位整数)的数组形式返回TIFFTag.TIFF_SSHORT
数据。- 结果
-
该数据为
short
的数组。 - 异常
-
ClassCastException
- 如果该字段不是类型TIFF_SSHORT
。
-
getAsInts
public int[] getAsInts()
以int
s(带符号的32位整数)的数组形式返回TIFFTag.TIFF_SLONG
数据。- 结果
-
该数据为
int
的数组。 - 异常
-
ClassCastException
-如果字段的类型是不TIFF_SHORT
,TIFF_SSHORT
,或TIFF_SLONG
。
-
getAsLongs
public long[] getAsLongs()
以long
s(带符号的64位整数)的数组形式返回TIFFTag.TIFF_LONG
或TIFF_IFD_POINTER
数据。- 结果
-
数据为
long
的数组。 - 异常
-
ClassCastException
- 如果该字段的类型不是TIFF_LONG
或TIFF_IFD_POINTER
。
-
getAsFloats
public float[] getAsFloats()
以float
s(32位浮点值)的数组形式返回TIFFTag.TIFF_FLOAT
数据。- 结果
-
该数据为
float
的数组。 - 异常
-
ClassCastException
- 如果该字段的类型不是TIFF_FLOAT
。
-
getAsDoubles
public double[] getAsDoubles()
以double
s(64位浮点值)的数组形式返回TIFFTag.TIFF_DOUBLE
数据。- 结果
-
该数据为
double
的数组。 - 异常
-
ClassCastException
- 如果该字段不是类型TIFF_DOUBLE
。
-
getAsSRationals
public int[][] getAsSRationals()
将TIFFTag.TIFF_SRATIONAL
数据作为int
s的2元素数组的数组int
。- 结果
- 数据作为一组签名的理性。
- 异常
-
ClassCastException
- 如果该字段的类型不是TIFF_SRATIONAL
。
-
getAsRationals
public long[][] getAsRationals()
将TIFFTag.TIFF_RATIONAL
数据作为long
s的2元素数组的数组long
。- 结果
- 数据为无符号有理数的数组。
- 异常
-
ClassCastException
- 如果该字段不是类型TIFF_RATIONAL
。
-
getAsInt
public int getAsInt(int index)
以任何格式返回数据为int
。TIFFTag.TIFF_BYTE
值被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将在[TIFF_SBYTE
]范围内返回。TIFF_UNDEFINED
值被视为TIFF_BYTE
。在数据
TIFF_SLONG
,TIFF_LONG
,TIFF_FLOAT
,TIFF_DOUBLE
或TIFF_IFD_POINTER
格式简单地转换为int
,并可能截断受到影响。通过使用双精度算术将分子除以分母然后转换为
int
来评估TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据。 可能发生精度损失和截断。TIFF_ASCII
格式的数据将由Double.parseDouble
方法解析,结果案例为int
。- 参数
-
index
- 数据索引。 - 结果
-
给定索引处的数据为
int
。
-
getAsLong
public long getAsLong(int index)
以任何格式返回数据为long
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将在[TIFF_SBYTE
]范围内返回。TIFF_FLOAT
和TIFF_DOUBLE
中的数据被简单地转换为long
并且可能遭受截断。通过使用双精度算术将分子除以分母然后转换为
long
来评估TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据。 可能发生精度损失和截断。TIFF_ASCII
格式的数据将由Double.parseDouble
方法解析,结果转换为long
。- 参数
-
index
- 数据索引。 - 结果
-
给定指数的数据为
long
。
-
getAsFloat
public float getAsFloat(int index)
以任何格式返回数据为float
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将在[TIFF_SBYTE
]范围内返回。在数据
TIFF_SLONG
,TIFF_LONG
,TIFF_DOUBLE
,或TIFF_IFD_POINTER
格式简单地转换为float
,并可能截断受到影响。通过使用双精度算术将分子除以分母然后转换为
float
来评估TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据。TIFF_ASCII
格式的数据将被Double.parseDouble
方法解析,结果转换为float
。- 参数
-
index
- 数据索引。 - 结果
-
给定索引处的数据为
float
。
-
getAsDouble
public double getAsDouble(int index)
以任何格式返回数据,如double
。TIFFTag.TIFF_BYTE
和TIFF_UNDEFINED
数据被视为未签名; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE
数据将在[TIFF_SBYTE
]范围内返回。通过使用双精度算术将分子除以分母来评估
TIFF_SRATIONAL
或TIFF_RATIONAL
格式的数据。TIFF_ASCII
格式的数据将由Double.parseDouble
方法解析。- 参数
-
index
- 数据索引。 - 结果
-
给定索引处的数据为
double
。
-
getAsString
public String getAsString(int index)
返回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
public String getValueAsString(int index)
返回包含数据项的人类可读版本的String
。 类型TIFFTag.TIFF_RATIONAL
或TIFF_SRATIONAL
数据表示为由'/'
字符分隔的一对整数。 如果一个分子TIFFTag.TIFF_RATIONAL
或TIFF_SRATIONAL
是分母的整数倍,则该值被表示为"q/1"
其中q
是分子和分母的商。- 参数
-
index
- 数据索引。 - 结果
-
给定指数的数据为
String
。 - 异常
-
ClassCastException
- 如果该字段不属于某种合法字段类型。
-
hasDirectory
public boolean hasDirectory()
返回该字段是否具有TIFFDirectory
。- 结果
- 当且仅当getDirectory()返回非null时才返回true。
-
getDirectory
public TIFFDirectory getDirectory()
返回关联的TIFFDirectory
(如果可用)。 如果未设置目录,则将返回null
。- 结果
- TIFFDirectory实例或null。
-
clone
public TIFFField clone() throws CloneNotSupportedException
克隆该字段及其中包含的所有信息。- 重写:
-
clone
类Object
- 结果
-
此
TIFFField
的克隆。 - 异常
-
CloneNotSupportedException
- 如果无法克隆实例。 - 另请参见:
-
Cloneable
-
-