首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java拇指指甲器或imgscalr调整jpeg图像时的粉红色/红色色调

使用java拇指指甲器或imgscalr调整jpeg图像时的粉红色/红色色调
EN

Stack Overflow用户
提问于 2014-09-30 08:10:55
回答 2查看 2.8K关注 0票数 6

我试图使用两个库(拇指imgscalr和imgscalr)来转换图像(下面的url)。我的代码可以在大多数图像上工作,除了一些经过转换后有粉红色/红色的图像。

我正试图了解原因,并欢迎任何建议。

注意事项-图像类型为5,即BufferedImage.TYPE_3BYTE_BGR,我正在使用Java 7

使用拇指钉

代码语言:javascript
复制
  Thumbnails.of(fromDir.listFiles())                
                    .size(thumbnailWidth, thumbnailHeight)
                    .toFiles(Rename.SUFFIX_HYPHEN_THUMBNAIL);

使用imgscalr

代码语言:javascript
复制
    BufferedImage bufferedImage = ImageIO.read(file);
    final BufferedImage jpgImage;

    LOG.debug("image type is =[{}] ", bufferedImage.getType());

     BufferedImage scaledImg = Scalr.resize(bufferedImage, Method.ULTRA_QUALITY, thumbnailWidth, thumbnailHeight, Scalr.OP_ANTIALIAS);


    File thumbnailFile = new File(fromDirPath + "/" + getFileName(file.getName()) +THUMBNAIL_KEYWORD  + ".png");

    ImageIO.write(scaledImg, getFileExtension(file.getName()), thumbnailFile);

    bufferedImage.flush();
    scaledImg.flush();
EN

回答 2

Stack Overflow用户

发布于 2014-12-04 17:22:53

我经常听到这个问题(imgscalr的作者) --问题总是在于,您正在读取/写入不同的文件格式,而ALPHA通道导致您的一个彩色通道(R/G/B)被从结果文件中剔除。

例如,如果您读取的文件是ARGB (4通道),并将其写成JPG (3通道)--除非您有意自己操作图像类型并直接将旧图像呈现给新的图像,否则您将得到一个带有"ARG“通道的文件.或者更具体的说,只有红色和绿色-没有蓝色。

PNG支持alpha通道,而JPG不支持,所以请注意这一点。

解决这一问题的方法是有目的地创建合适类型的BufferedImage (RGB、ARGB等)。并使用destImage.getGraphics()调用将一个图像呈现给另一个映像,然后将其写入磁盘并重新编码。

Sun和Oracle从来没有让ImageIO库聪明到能够在写入不同的文件类型时检测到不受支持的通道,因此这种行为经常发生:(

希望这能帮上忙!

票数 6
EN

Stack Overflow用户

发布于 2016-11-14 08:42:59

以下代码解决了我的问题:

代码语言:javascript
复制
ByteArrayOutputStream baos = new ByteArrayOutputStream();

  Thumbnails.of(new ByteArrayInputStream(imageByteArray))
    .outputFormat("jpg")
    .size(200, 200)
    .toOutputStream(outputStream);

  return baos.toByteArray();

我使用的是Thumbnailator,代码发布在这里:https://github.com/coobird/thumbnailator/issues/23

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26115851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档