cuốn sách gpt4 ai đã làm

java — Làm cách nào để chuyển đổi BufferedImage(RGB) thành BufferedImage(ARGB hoặc RGBA)?

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 06:28:33 27 4
mua khóa gpt4 Nike

我正在尝试将 Robot.createScreenCapture 函数生成的 RGB 图像转换为 ARGB 图像。我的目标是当两个图像之间的像素没有变化但我得到黑色时设置透明度。如下图所示。

例如如下创建的 BufferedImage:

 BufferedImage currImage = robot.createScreenCapture(new Rectangle(x, y, width,height));

以下函数旨在创建 ARGB 像素。

private BufferedImage bufferedImagesEqual(BufferedImage prevImage,
BufferedImage currImage) {
boolean changed = false;
BufferedImage imagePart = new BufferedImage(currImage.getWidth(), currImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
if (prevImage.getWidth() == currImage.getWidth()
&& prevImage.getHeight() == currImage.getHeight()) {

for (int x = 0; x < currImage.getWidth(); x++) {
for (int y = 0; y < prevImage.getHeight(); y++) {
int argb = currImage.getRGB(x, y);
if (prevImage.getRGB(x, y) != currImage.getRGB(x, y)){
// return false;
// currImage.setRGB(x, y, 0);
if(!changed){
changed = true;
}
}
khác {
imagePart.setRGB(x, y, 0xff000000);
}
}
}
} khác {
return imagePart;
}
if(changed){
return imagePart;
}else {
return null;
}
}

câu trả lời hay nhất

从之前和之后的图像开始......

Before After

Bằng cách sử dụng new Color(0, 0, 0, 0) thay vì 0xff000000 (并在像素相等时绘制一些东西),我得到

đầu ra

使用...

import java.awt.AlphaComposite;
nhập java.awt.Color;
nhập java.awt.Graphics2D;
nhập java.awt.image.BufferedImage;
nhập java.io.File;
nhập javax.imageio.ImageIO;
import javax.swing.ImageIcon;
nhập javax.swing.JLabel;
import javax.swing.JOptionPane;

public class ConvertBuffer {

public static void main(String[] args) {
thử {
BufferedImage before = ImageIO.read(new File("/Before.jpg"));
BufferedImage after = ImageIO.read(new File("/After.jpg"));

BufferedImage result = bufferedImagesEqual(before, after);

JLabel label = new JLabel(new ImageIcon(result));
label.setOpaque(true);
label.setBackground(Color.BLUE);
JOptionPane.showMessageDialog(null, label);
} catch (Exception e) {
e.printStackTrace();
}
}

private static BufferedImage bufferedImagesEqual(BufferedImage prevImage,
BufferedImage currImage) {
boolean changed = false;
BufferedImage imagePart = new BufferedImage(currImage.getWidth(), currImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
if (prevImage.getWidth() == currImage.getWidth()
&& prevImage.getHeight() == currImage.getHeight()) {

for (int x = 0; x < currImage.getWidth(); x++) {
for (int y = 0; y < prevImage.getHeight(); y++) {
if (prevImage.getRGB(x, y) != currImage.getRGB(x, y)) {
// return false;
// currImage.setRGB(x, y, 0);
if (!changed) {
changed = true;
}
imagePart.setRGB(x, y, currImage.getRGB(x, y));
} khác {
imagePart.setRGB(x, y, new Color(0, 0, 0, 0).getRGB());
}
}
}
} khác {
return imagePart;
}
if (changed) {
return imagePart;
} khác {
return null;
}
}

}

所以,除非您有示例图像可供使用,否则这是我们能做的最好的事情......

关于java - 如何将 BufferedImage(RGB) 转换为 BufferedImage(ARGB 或 RGBA)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26457579/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress