我正在开发一个捕获屏幕快照并从捕获的图像创建视频的应用程序。但是问题在于,当生成视频时,生成的视频中的颜色非常粉红色。我认为这是因为我正在使用BufferedImage.TYPE_3BYTE_BGR类型操纵捕获的图像以显示光标。有人可以告诉我如何解决此问题,我希望视频的颜色与屏幕的实际颜色相同。
为了捕获屏幕图像,我正在执行以下操作:
Robot robot = new Robot();
Rectangle captureSize = new Rectangle(screenBounds);
return robot.createScreenCapture(captureSize);
对于操作图像,我正在做如下操作:
image = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_3BYTE_BGR);
if (true) {
int x = MouseInfo.getPointerInfo().getLocation().x - 25;
int y = MouseInfo.getPointerInfo().getLocation().y - 37;
Graphics2D graphics2D = sourceImage.createGraphics();`enter code here`
graphics2D.drawImage(SimpleWebBrowserExample.m_MouseIcon, x, y, 48, 48, null);
}
image.getGraphics().drawImage(sourceImage, 0, 0, null);
return image;
请告诉我如何获取颜色与屏幕上实际颜色相同的图像。
谢谢。
问题内容: 我有以下代码,该代码创建灰度BufferedImage,然后设置每个像素的随机颜色。 在大约25%到30%的像素中会发生奇怪的行为,我在其中设置颜色,然后立即设置颜色,使其与之前设置的值不同。我是否以错误的方式设置颜色? 问题答案: 这是您的解决方案:禁止getRGB并使用Raster(比getRGB更快,更容易)或更好的DataBuffer(最快,但必须处理编码): 在您的情况下,g
问题内容: 所以我有一个带有火山的图像文件。其他所有内容均为0xFFFF00FF(不透明的洋红色)。我想将包含该颜色的每个像素替换为0(透明)。到目前为止,我的方法如下所示: 这工作正常,但似乎很慢。我见过有人以其他方式执行此操作,但是我不知道发生了什么。如果有人知道更好的方法,我非常想听听。 问题答案: 为了避免遍历像素,请更改基础ColorModel。这是一个例子。以下是作者使用原始Buffe
问题内容: 我需要创建一个具有指定背景颜色的矩形,在背景上绘制一些图案并将其保存到文件中。我不知道如何创建背景。 我正在使用嵌套循环: 但是,当图像较大时,速度非常慢。 如何以更有效的方式设置颜色? 问题答案: 获取图像的图形对象,将当前绘画设置为所需的颜色,然后调用。
问题内容: 该方法返回单个int。如何分别获得红色,绿色和蓝色作为0到255之间的值? 问题答案: Java的Color类可以进行转换:
问题内容: 特别是我的图像在透明的情况下都是纯黑色的。我想在绘制图像时为图像分配简单的颜色,以便将黑色区域更改为新颜色。 我尝试使用仅返回所需颜色的RGBImageFilter,但出现了问题,根本没有绘制任何内容。(ColourFilter扩展了RGBImageFilter,并仅在其filterRGB()方法中返回设置的颜色。) 问题答案: 查看AlphaComposites,尤其是DST_IN: