- java.lang.Object
-
- javax.imageio.plugins.tiff.TIFFField
-
- All Implemented Interfaces:
-
Cloneable
public final class TIFFField extends Object implements Cloneable
表示TIFF 6.0图像文件目录中的字段的类。TIFF图像文件目录(IFD)中的字段被定义为伴随有相同数据类型的值序列的标签号。 TIFF 6.0定义了12种数据类型; TIFF技术说明1中的第13类型
TIFF Data Type to Java Data Type Mapping TIFF Data Type Java Constant Java Data Type Java Type NameIFD在TIFF Specification Supplement 1中定义。这些TIFF数据类型由Java常量引用,并在内部映射到Java语言数据类型和类型名称,如下所示:BYTETIFFTag.TIFF_BYTEbyte"Byte"ASCIITIFFTag.TIFF_ASCIIString"Ascii"SHORTTIFFTag.TIFF_SHORTchar"Short"LONGTIFFTag.TIFF_LONGlong"Long"RATIONALTIFFTag.TIFF_RATIONALlong[2]{numerator, denominator}"Rational"SBYTETIFFTag.TIFF_SBYTEbyte"SByte"UNDEFINEDTIFFTag.TIFF_UNDEFINEDbyte"Undefined"SSHORTTIFFTag.TIFF_SSHORTshort"SShort"SLONGTIFFTag.TIFF_SLONGint"SLong"SRATIONALTIFFTag.TIFF_SRATIONALint[2]{numerator, denominator}"SRational"FLOATTIFFTag.TIFF_FLOATfloat"Float"DOUBLETIFFTag.TIFF_DOUBLEdouble"Double"IFDTIFFTag.TIFF_IFD_POINTERlong"IFDPointer"- 从以下版本开始:
- 9
- 另请参见:
-
TIFFDirectory,TIFFTag
-
-
构造方法摘要
构造方法 Constructor 描述 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。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 TIFFFieldclone()克隆该字段及其中包含的所有信息。static ObjectcreateArrayForType(int dataType, int count)创建一个适合指定数据类型的数组。static TIFFFieldcreateFromMetadataNode(TIFFTagSet tagSet, Node node)从TIFF本机图像元数据节点创建一个TIFFField。byte[]getAsBytes()将数据作为未解释的数组返回byte。char[]getAsChars()返回TIFFTag.TIFF_SHORT数据作为阵列charS(无符号的16位整数)。doublegetAsDouble(int index)以double形式返回任何格式的double。double[]getAsDoubles()返回TIFFTag.TIFF_DOUBLE数据作为doubles(64位浮点值)的数组。floatgetAsFloat(int index)以float格式返回任何格式的float。float[]getAsFloats()返回TIFFTag.TIFF_FLOAT数据作为floats(32位浮点值)的数组。intgetAsInt(int index)以int形式返回任何格式的int。int[]getAsInts()返回TIFFTag.TIFF_SLONG数据作为阵列int秒(带符号的32位整数)。longgetAsLong(int index)以long格式返回任何格式的long。long[]getAsLongs()返回TIFFTag.TIFF_LONG或TIFF_IFD_POINTER数据作为longs(带符号的64位整数)的数组。NodegetAsNativeNode()返回TIFFField作为名为"TIFFField"或"TIFFIFD"的节点,如TIFF本机图像元数据规范中所述。long[]getAsRational(int index)返回一个TIFFTag.TIFF_RATIONAL数据项作为一个双元素的int数组。long[][]getAsRationals()返回TIFFTag.TIFF_RATIONAL数据作为2元件数组的数组long秒。short[]getAsShorts()返回TIFFTag.TIFF_SSHORT数据作为shorts(带符号的16位整数)的数组。int[]getAsSRational(int index)返回TIFFTag.TIFF_SRATIONAL作为一个二单元阵列的数据项int秒。int[][]getAsSRationals()返回TIFFTag.TIFF_SRATIONAL数据作为2元件数组的数组int秒。StringgetAsString(int index)返回TIFFTag.TIFF_ASCII值作为String。intgetCount()返回字段中存在的数据项数。ObjectgetData()返回与该字段关联的数据对象的引用。TIFFDirectorygetDirectory()返回相关联的TIFFDirectory(如果可用)。TIFFTaggetTag()检索与此字段关联的标签。intgetTagNumber()检索范围[0,65535]的标签号。intgetType()返回字段中存储的数据类型。static intgetTypeByName(String typeName)返回与提供的数据类型名称相对应的数据类型常量。static StringgetTypeName(int dataType)返回提供的数据类型常量的名称。StringgetValueAsString(int index)返回一个String其中包含数据项的人性化版本。booleanhasDirectory()返回字段是否有一个TIFFDirectory。booleanisIntegral()指示与该字段相关联的值是否为整数数据类型。
-
-
-
构造方法详细信息
-
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字段,返回的值为Strings,而不是文件表示中的数据总长度。- 结果
- 存在于该字段中的数据项的数量。
-
getData
public Object getData()
返回与该字段关联的数据对象的引用。- 结果
- 字段的数据对象。
-
getAsBytes
public byte[] getAsBytes()
以byte的无法解释的数组的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数据作为chars(无符号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数据作为longs(带符号的64位整数)的数组。- 结果
-
数据为
long的数组。 - 异常
-
ClassCastException- 如果该字段不是类型TIFF_LONG或TIFF_IFD_POINTER。
-
getAsFloats
public float[] getAsFloats()
返回TIFFTag.TIFF_FLOAT数据作为floats(32位浮点值)的数组。- 结果
-
数据为
float的数组。 - 异常
-
ClassCastException- 如果字段不是类型TIFF_FLOAT。
-
getAsDoubles
public double[] getAsDoubles()
返回TIFFTag.TIFF_DOUBLE数据作为doubles(64位浮点值)的数组。- 结果
-
数据为
double的数组。 - 异常
-
ClassCastException- 如果字段不是类型TIFF_DOUBLE。
-
getAsSRationals
public int[][] getAsSRationals()
返回TIFFTag.TIFF_SRATIONAL数据作为2元件数组的数组int秒。- 结果
- 数据作为一系列符号理性。
- 异常
-
ClassCastException- 如果字段不是类型TIFF_SRATIONAL。
-
getAsRationals
public long[][] getAsRationals()
返回TIFFTag.TIFF_RATIONAL数据作为2元件数组的数组long秒。- 结果
- 数据作为无符号理性的数组。
- 异常
-
ClassCastException- 如果字段不是类型TIFF_RATIONAL。
-
getAsInt
public int getAsInt(int index)
以int形式返回任何格式的int。TIFFTag.TIFF_BYTE值被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将返回范围[TIFF_SBYTE]。A
TIFF_UNDEFINED价值被视为是一个TIFF_BYTE。在数据
TIFF_SLONG,TIFF_LONG,TIFF_FLOAT,TIFF_DOUBLE或者TIFF_IFD_POINTER格式简单地转换为int,并可从截断受到影响。TIFF_SRATIONAL或TIFF_RATIONAL格式中的数据通过使用双精度算术将分子除以分母,然后转换为int来进行int。 可能会发生精度损失和截断。TIFF_ASCII格式的数据TIFF_ASCIIDouble.parseDouble方法进行解析,结果为int。- 参数
-
index- 数据的索引。 - 结果
-
给定指数的数据为
int。
-
getAsLong
public long getAsLong(int index)
以long形式返回任何格式的long。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将返回范围[TIFF_SBYTE]。TIFF_FLOAT和TIFF_DOUBLE中的数据简单地转换为long并可能遭受截断。TIFF_SRATIONAL或TIFF_RATIONAL格式的数据通过使用双精度算术将分子除以分母,然后转换为long来进行long。 可能会发生精度损失和截断。TIFF_ASCII格式的数据TIFF_ASCIIDouble.parseDouble方法进行解析,结果转换为long。- 参数
-
index- 数据的索引。 - 结果
-
给定指数的数据为
long。
-
getAsFloat
public float getAsFloat(int index)
以float形式返回任何格式的float。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将返回范围[TIFF_SBYTE]。在数据
TIFF_SLONG,TIFF_LONG,TIFF_DOUBLE,或TIFF_IFD_POINTER格式简单地转换为float,并可从截断受到影响。TIFF_SRATIONAL或TIFF_RATIONAL格式中的数据通过使用双精度算术将分子除以分母然后转换为float来进行float。TIFF_ASCII格式的数据TIFF_ASCIIDouble.parseDouble方法进行解析,结果转换为float。- 参数
-
index- 数据的索引。 - 结果
-
给定指数的数据为
float。
-
getAsDouble
public double getAsDouble(int index)
以double形式返回任何格式的double。TIFFTag.TIFF_BYTE和TIFF_UNDEFINED数据被视为无符号; 也就是说,不会发生符号扩展,返回的值将在[0,255]范围内。TIFF_SBYTE数据将返回范围[TIFF_SBYTE]。TIFF_SRATIONAL或TIFF_RATIONAL格式中的数据通过使用双精度算术将分子除以分母来进行评估。TIFF_ASCII格式的数据TIFF_ASCIIDouble.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()返回非空值,则为true。
-
getDirectory
public TIFFDirectory getDirectory()
返回相关联的TIFFDirectory(如果可用)。 如果没有设置目录,那么将返回null。- 结果
- TIFFDirectory实例或null。
-
clone
public TIFFField clone() throws CloneNotSupportedException
克隆该字段及其中包含的所有信息。- 重写:
-
clone中的Object - 结果
-
这个克隆
TIFFField。 - 异常
-
CloneNotSupportedException- 如果实例无法克隆。 - 另请参见:
-
Cloneable
-
-