当前位置: 首页 > 面试题库 >

Java如何设置jpg质量

汤玉宸
2023-03-14
问题内容

只是想编辑一些代码,以使输出jpg质量不是默认的低质量设置,

try
        {
            ImageIO.write(var6, "jpg", var7);
        }

.....当前正在使用。

我看过其他一些设置质量的Java示例,但对Java不太熟悉,我在理解如何插入东西和重做一些示例方面遇到了麻烦,这些示例在使用Java设置图像质量方面已经见过。

ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault());
    iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwparam.setCompressionQuality(quality);
    writer.write(null, new IIOImage(image, null, null), iwparam);

这是我要开始工作的代码........

public static String func_74292_a(File par0File, String par1Str, int par2, int par3)
{
    File var4 = new File(par0File, "screenshots");
    var4.mkdir();
    int var5 = par2 * par3;

    if (field_74293_b == null || field_74293_b.capacity() < var5)
    {
        field_74293_b = BufferUtils.createIntBuffer(var5);
        field_74294_c = new int[var5];
    }

    GL11.glPixelStorei(GL11.GL_PACK_ALIGNMENT, 1);
    GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);
    field_74293_b.clear();
    GL11.glReadPixels(0, 0, par2, par3, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, field_74293_b);
    field_74293_b.get(field_74294_c);
    func_74289_a(field_74294_c, par2, par3);
    BufferedImage var6 = new BufferedImage(par2, par3, 1);
    var6.setRGB(0, 0, par2, par3, field_74294_c, 0, par2);

    if (par1Str == null)
    {
        var7 = func_74290_a(var4);
    }
    else
    {
        var7 = new File(var4, par1Str);
    }

    try
    {
        ImageIO.write(var6, "jpg", var7);
    }
    catch (IOException var8)
    {
        ;
    }

    Thread var7x = new Thread(new ScreenShotHelper$1());
    var7x.start();
    return "\u00a7aUploading Screenshot....";
}

private static File func_74290_a(File par0File)
{
    String var1 = dateFormat.format(new Date()).toString();
    int var2 = 1;

    while (true)
    {
        File var3 = new File(par0File, var1 + (var2 == 1 ? "" : "_" + var2) + ".jpg");

        if (!var3.exists())
        {
            return var3;
        }

        ++var2;
    }
}

问题答案:

终于用这段代码做到了…

try
{

    ImageOutputStream  ios =  ImageIO.createImageOutputStream(var7);
    Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName("jpeg");
    ImageWriter writer = iter.next();
    ImageWriteParam iwp = writer.getDefaultWriteParam();
    iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    iwp.setCompressionQuality(0.85f);
    writer.setOutput(ios);
    writer.write(null, new IIOImage(var6,null,null),iwp);
    writer.dispose();

    //ImageIO.write(var6, "jpg", var7);
}


 类似资料:
  • Cesium中为几何形状设置材质有多种方法 第一种方法 Material 直接构建Cesium.Material对象,通过设置Material的属性来进行控制,官方示例和API描述的比较清楚, API说明 材质示例 第二种方法 MaterialProperty 今天介绍通过MaterialProperty设置: Cesium 材质相关的类为 MaterialProperty,它有以下几个子类: –

  • 问题内容: 我正在玩Python中的PIL库,并且想知道如何确定给定JPG图像的质量。我尝试打开JPG图像并对其进行处理,然后再次保存为原始质量。Image.save让我确定所需的质量: 但我看不出有任何方法可以提取原始内容。现在,我只是在猜测,并通过对’quality’参数进行二进制搜索来尝试具有与输入大小相同的输出文件,但这不是长期可接受的解决方法:) 我也尝试使用:Image.info但大多

  • crf 20是相当高的质量,接近100%,恢复的帧应该接近原始。视频播放器暂停帧显示足够的质量。(虽然我不能说它是否在关键帧上) ffmpeg版本信息:

  • 我一直在试图找出如何样式的材料ui TextField组件。 我的类创建如下: 我的问题是,我似乎无法让文本字段的颜色变成白色。我似乎能够将样式应用于整个文本字段(因为宽度样式工作等)...但是我认为问题是我没有将样式应用到链的更下游和实际输入中。 我曾试图寻找其他关于传递输入道具的答案,但没有成功。 我已经尽了我最大的努力,但我想我需要问问是否有人知道我做错了什么。 它现在看起来是什么样子

  • 我正在开发一个Laravel应用程序。我正在使用收银员安装条纹付款方法。现在,我在为创建新订阅的条带计划设置质量时遇到了一些问题。这就是我创建新订阅的方式。 上面的代码工作得非常好。但是当我试着这样设置质量时 它不起作用。这是说UpdateEquality方法不存在。如何使用newSubscription一次性设置质量?

  • 本文向大家介绍如何设置MongoDB Java环境?,包括了如何设置MongoDB Java环境?的使用技巧和注意事项,需要的朋友参考一下 安装和运行MongoDB 访问MongoDB主页,在“软件”(下拉列表)中,选择“社区服务器”。 在“ MongoDB社区服务器”页面中,指定平台详细信息并下载与您的平台兼容的MongoDB服务器。 安装下载的软件,并在C驱动器中创建一个名为data的文件夹/