Tag: 像素

突出显示图像之间的差异

我应该修改这个图像比较代码以突出显示/指出两个图像之间的差异。 有没有办法修改此代码,以突出显示图像的差异。 如果没有任何关于如何去做的建议将不胜感激。 int width1 = img1.getWidth(null); int width2 = img2.getWidth(null); int height1 = img1.getHeight(null); int height2 = img2.getHeight(null); if ((width1 != width2) || (height1 != height2)) { System.err.println(“Error: Images dimensions mismatch”); System.exit(1); } long diff = 0; for (int i = 0; i < height1; i++) { for (int j = 0; j > […]

从rgb像素值创建缓冲图像

我有一个RGB像素的整数数组,看起来像: pixels[0] = pixels[1] = pixels[2] = pixels[3] = …etc… 我正在尝试从中创建一个BufferedImage。 我尝试了以下方法: BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); img.getRaster().setPixels(0, 0, width, height, pixels); 但是得到的图像有色带问题。 图像不清晰,通过它有对角线和水平线。 使用rgb值初始化图像的正确方法是什么? 编辑:这是我的图像的样子 谢谢,杰夫

在C#中将像素数组转换为图像

我的C#程序中有一个int像素数组,我想将其转换为图像。 问题是我正在将程序的Java源代码转换为等效的C#代码。 在java中,行读取将int像素数组显示为image: Image output = createImage(new MemoryImageSource(width, height, orig, 0, width)); 有人能告诉我C#等价吗? 这里的orig是int像素的数组。 我搜索了Bitmap类,有一个名为SetPixel的方法,但问题是需要ax,y坐标数。 但我在我的代码中有一个int像素数组。 另一个奇怪的事情是我的orig数组有负数,它们远远超过255.在Java中,这是相同的情况(意味着C#和Java中的数组都具有相同的值),并且这些值在Java中运行良好。 但我无法将该行转换为C#。 请帮忙。

Robot的getPixelColor(int x,int y)方法如何工作?

Robot类的方法getPixelColor(int x,int y)究竟是如何工作的? 我试过这个代码片段: try { Robot robos = new Robot(); } catch (AWTException e) { } for (int i = 0; i < 100; i++) robos.getPixelColor(0, 0); System.out.println("fsadf"); 在我的电脑上,这是一个核心2组合,执行print语句需要一秒或更短的时间。 但是,当我在我的笔记本电脑上运行相同的代码时,这是一个核心i3,它花费了更多的时间(大约2-3秒)。 这背后的原因是什么? 是否与屏幕质量有关? 我怎么解决这个问题?

java中的setRGB()

我正在使用setRGB()来更改图像像素的值。 int rgb=new Color(0,0,0).getRGB(); image1.setRGB(i,j,rgb); //where i,j is the boundaries of the image 在这里,我将所有像素值设置为白色。 但这种变化并没有反映在图像中。 任何人都知道setRGB()它是如何工作的?

如何为像素着色?

我必须创建一个简单的2D动画,而不使用各种基元来绘制直线,圆等。 它必须通过操纵像素并通过着色像素实现绘制线,圆等的算法之一来完成。 我考虑过使用Turbo C,但我使用的是ubuntu。 所以我尝试使用dosbox来安装和运行turbo C,但无济于事。 现在我唯一的选择是Java。 是否可以在Java中操纵像素? 我找不到任何相同的好教程。 如果可以给出相同的示例代码,那将是很好的。

int数组到BufferedImage

我正在使用Robot类进行打印,我将BufferedImage转换为int数组。 然后我想将int数组转换回bufferedimage,但这会产生错误。 这是我的代码: Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); BufferedImage printscreen = robot.createScreenCapture(new Rectangle(screen)); int[] pixels = ((DataBufferInt) printscreen.getRaster().getDataBuffer()).getData(); BufferedImage image = new BufferedImage(screen.width, screen.height, BufferedImage.TYPE_INT_RGB); WritableRaster raster = (WritableRaster) image.getRaster(); raster.setPixels(0, 0, screen.width, screen.height, pixels); 但我收到错误: ArrayIndexOutOfBoundsException: 2073600但为什么? 我在这一行得到了例外: raster.setPixels(0, 0, screen.width, screen.height, pixels); 编辑:如果我将第二个bufferedimage类型更改为TYPE_BYTE_GRAY,它正在工作。

视网膜显示器上的摆动和位图

我有一个可以在OS X上运行的Java桌面应用程序。 现在新的MacBook Pro有一个视网膜显示器,我担心:它如何在Swing上工作? 当Java应用程序同时使用Swing组件和一些位图图形(如自定义图标/ ImageIcon)时怎么样? 是否应自动调整所有桌面Java应用程序的大小(例如,将每个像素增加四倍),或者我是否需要创建两个版本的图标集(例如,一个具有24×24图标,另一个具有96×96图标)并以某种方式确定应用程序在视网膜显示器上运行?

如何修改位图的rgb像素看起来不同

我试图将位图图像转换为在热或夜间捕获的图像。 但我不知道是什么/如何修改像素看起来像那样。 我只知道 public static Bitmap newBitmapwithNightOrThermalEffect(Bitmap bmp) { long start = System.currentTimeMillis(); int width = bmp.getWidth(); int height = bmp.getHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); int pixColor = 0; int pixR = 0; int pixG = 0; int pixB = 0; int newR = 0; int newG = 0; int newB = 0; […]

如何从PNG文件中读取像素?

我知道如何使用Robot,Windowtester或FEST捕获屏幕截图。 我也知道如何使用机器人从屏幕上读取像素。 int x = 10; int y = 10; Color px = getPixelColor(int x, int y); 但是,我不知道如何从已捕获的图像中读取像素。 我打算将当前图像与文件中的图像进行比较。 让我们说两者都是PNG。 是否有任何框架可用于逐像素地比较图像?