3

画像のサイズを変更するために org.imgscalr.Scalr(http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/#solve) ライブラリを使用していますが、サイズ変更すると背景が透明な PNG が黒くなります。私のコードは以下の通りです:

    public void scaleImage(String originalImage, int width, int height) throws IOException {
    File imgFl = new File(originalImage);
    BufferedImage originalBufImage = ImageIO.read(imgFl);
    BufferedImage scaledImage = Scalr.resize(originalBufImage, Scalr.Method.ULTRA_QUALITY, width, height, Scalr.OP_BRIGHTER);
    File outputfile = new File(originalImage);
    String fileExtension = originalImage.substring(originalImage.indexOf(".") + 1, originalImage.length());
    ImageIO.write(scaledImage, fileExtension, outputfile);
}

誰もこれについて手がかりを持っていますか?

ありがとう、アビシェーク

4

2 に答える 2

2

なぜそうなるのかはわかりませんが、画像内に他に何も黒くないと仮定すると、次の方法で黒を透明にすることができます。

private static Image mct(Image im, final Color color) {
    ImageFilter filter = new RGBImageFilter() {
      // the color we are looking for... Alpha bits are set to opaque
      public int markerRGB = color.getRGB() | 0xFF000000;

      public final int filterRGB(int x, int y, int rgb) {
        if ( ( rgb | 0xFF000000 ) == markerRGB ) {
          // Mark the alpha bits as zero - transparent
          return 0x00FFFFFF & rgb;
          }
        else {
          // nothing to do
          return rgb;
          }
        }
      };

色に一致するすべての RGB 値を透明としてイメージを返します。

これが役に立ったことを願っています。

于 2012-09-05T12:29:44.940 に答える