Module  java.desktop

Class JPEGImageWriteParam



  • public class JPEGImageWriteParam
    extends ImageWriteParam
    该类增加了在使用内置JPEG writer插件时设置JPEG量化和霍夫曼表的能力,并请求为图像计算优化的霍夫曼表。 该类的一个实例将从内置的JPEG ImageWritergetDefaultImageWriteParam方法中返回。

    这些添加的主要目的是允许表的规范用于编码缩写的流。 内置的JPEG作者也会接受普通的ImageWriteParam ,在这种情况下,作者将在内部构建必要的表格。

    在任一情况下, ImageWriteParam的质量设置与底层库具有相同的含义:1.00表示全部1的量化表,0.75表示“标准”,视觉无损量化表,0.00表示全部255的浓缩表。

    虽然缩写流的表格通常首先编写仅包含表格的缩写流来指定,但在某些应用程序中,表格提前固定。 该类允许从客户端代码直接指定表。

    通常,这些表在传递给写入程序的IIOMetadata对象中指定,并且这些对象中包含的任何表都将写入流中。 如果在元数据中没有指定表,则会写入一个缩写的流。 如果元数据中没有表,而在JPEGImageWriteParam没有指定表,则使用“标准”视觉无损表编码缩写流。 当必须写入缩写流,而不首先向流中写入任何表时,必须使用此类来指定表。 为了使用这个类,传递给写入程序的元数据对象不能包含任何表,也不能提供流元数据。 有关默认表的更多信息,请参阅JPEGQTableJPEGHuffmanTable

    默认JPEGImageWriteParam由返回getDefaultWriteParam作家的方法不包含表。 默认表包含在作者返回的默认IIOMetadata对象中。

    如果元数据包含表,则忽略JPEGImageWriteParam中给出的表。 此外,一旦写入了一组表,只有元数据中的表可以覆盖它们以用于后续写入,无论是相同的流还是不同的。 为了使用这个类来指定新的表,必须调用writer的reset方法。

    有关内置JPEG插件的操作的详细信息,请参阅JPEG metadata format specification and usage notes

    • 构造方法详细信息

      • JPEGImageWriteParam

        public JPEGImageWriteParam​(Locale locale)
        构造一个JPEGImageWriteParam 不支持平铺。 支持逐行编码。 默认逐行模式为MODE_DISABLED。 支持单一形式的压缩,名为“JPEG”。 默认压缩质量为0.75。
        参数
        locale -一个 Locale由超类用于本地化压缩类型名称和质量描述,或 null
    • 方法详细信息

      • getCompressionQualityDescriptions

        public String[] getCompressionQualityDescriptions​()
        描述从类别复制ImageWriteParam
        返回String的数组,可以与getCompressionQualityValues一起使用,作为设置或显示压缩质量等级的用户界面的一部分。 所述String具有索引i提供质量水平之间的范围内的描述getCompressionQualityValues[i]getCompressionQualityValues[i + 1] 需要注意的是阵列的长度从返回getCompressionQualityValues将始终是一个大于从返回getCompressionQualityDescriptions

        作为一个例子,字符串“好”,“较好”和“最佳”可与范围相关[0, .33)[.33, .66) ,并[.66, 1.0] 在这种情况下, getCompressionQualityDescriptions将返回{ "Good", "Better", "Best" }getCompressionQualityValues将返回{ 0.0F, .33F, .66F, 1.0F }

        如果没有可用的描述,则返回null 如果null从返回getCompressionQualityValues ,这种方法也必须返回null

        该说明应本地化为Locale由归国getLocale ,如果它是非null

        如果有多种压缩类型,但没有设置,则抛出一个IllegalStateException

        默认实现检查压缩是否受支持,压缩模式是否为MODE_EXPLICIT 如果是,如果getCompressionTypes()nullgetCompressionType()是非null ,它将返回null

        重写:
        getCompressionQualityDescriptionsImageWriteParam
        结果
        String的数组包含压缩质量等级的本地化描述。
        另请参见:
        ImageWriteParam.getCompressionQualityValues()
      • getCompressionQualityValues

        public float[] getCompressionQualityValues​()
        描述从类复制: ImageWriteParam
        返回float的数组,可以与getCompressionQualityDescriptions一起使用,作为设置或显示压缩质量级别的用户界面的一部分。 有关详细信息,请参阅getCompressionQualityDescriptions

        如果没有可用的描述,则返回null 如果null从返回getCompressionQualityDescriptions ,这种方法也必须返回null

        如果有多种压缩类型,但没有设置,则抛出一个IllegalStateException

        默认实现检查压缩是否受支持,而压缩模式是MODE_EXPLICIT 如果是,如果getCompressionTypes()nullgetCompressionType()是非null ,它返回null

        重写:
        getCompressionQualityValuesImageWriteParam
        结果
        float s的阵列表示 String s从 getCompressionQualityDescriptions描述的压缩质量水平之间的边界。
        另请参见:
        ImageWriteParam.getCompressionQualityDescriptions()
      • areTablesSet

        public boolean areTablesSet​()
        如果表当前设置,则返回 true
        结果
        true如果表存在。
      • setEncodeTables

        public void setEncodeTables​(JPEGQTable[] qTables,
                                    JPEGHuffmanTable[] DCHuffmanTables,
                                    JPEGHuffmanTable[] ACHuffmanTables)
        设置用于编码缩写流的量化和霍夫曼表。 每种类型最多可能有4个表。 如果在元数据中指定了表,则忽略这些表。 所有参数必须是非null 霍夫曼表的两个阵列必须具有相同数量的元素。 假设元数据中的帧和扫描头中的表格符号等同于这些数组中的索引。 参数数组由此方法复制。
        参数
        qTables - 量化表对象数组。
        DCHuffmanTables - 一组霍夫曼表对象。
        ACHuffmanTables - 一组霍夫曼表对象。
        异常
        IllegalArgumentException - 如果任何参数是 null或有多于4个元素,或者DC和AC表的数量不同。
        另请参见:
        unsetEncodeTables()
      • setOptimizeHuffmanTables

        public void setOptimizeHuffmanTables​(boolean optimize)
        告诉作者为写入过程的一部分,为图像生成优化的霍夫曼表。 默认值为false 如果此标志设置为true ,它将覆盖元数据中指定的任何表。 请注意,这意味着使用此标志设置为true任何图像将始终包含霍夫曼表。
        参数
        optimize - 一个布尔值,表示写入时是否生成优化的霍夫曼表。
        另请参见:
        getOptimizeHuffmanTables()
      • getOptimizeHuffmanTables

        public boolean getOptimizeHuffmanTables​()
        返回传递到最近一次调用值 setOptimizeHuffmanTables ,或者 false如果 setOptimizeHuffmanTables从未被调用。
        结果
        true如果作者将生成优化的霍夫曼表。
        另请参见:
        setOptimizeHuffmanTables(boolean)