草庐IT

bufferedimage

全部标签

java - 存储图形对象是个好主意吗?

我目前正在用java编写一个绘图程序,旨在具有灵活和全面的功能。它源于我前一天通宵写的最后一个项目。正因为如此,它有大量的错误,我一直在一一解决(例如,我只能保存空文件,我的矩形没有正确绘制,但我的圆圈可以......)。这一次,我一直在尝试将撤消/重做功能添加到我的程序中。但是,我无法“撤消”我所做的事情。因此,我想在每次触发mouseReleased事件时保存我的BufferedImage副本。但是,由于某些图像的分辨率为1920x1080,我认为这样做效率不高:存储它们可能会占用千兆字节的内存。我不能简单地用背景颜色绘制相同的东西以撤消的原因是因为我有许多不同的画笔,它们基于Ma

Java BufferedImage 分别获得红色、绿色和蓝色

getRGB()方法返回单个int。我怎样才能将红色、绿色和蓝色都分别作为0到255之间的值? 最佳答案 一个像素由一个4字节(32位)整数表示,如下所示:00000000000000000000000011111111^Alpha^Red^Green^Blue所以,要获得单个颜色分量,您只需要一点二进制算术:intrgb=getRGB(...);intred=(rgb>>16)&0x000000FF;intgreen=(rgb>>8)&0x000000FF;intblue=(rgb)&0x000000FF;这确实是java.awt

Java BufferedImage 分别获得红色、绿色和蓝色

getRGB()方法返回单个int。我怎样才能将红色、绿色和蓝色都分别作为0到255之间的值? 最佳答案 一个像素由一个4字节(32位)整数表示,如下所示:00000000000000000000000011111111^Alpha^Red^Green^Blue所以,要获得单个颜色分量,您只需要一点二进制算术:intrgb=getRGB(...);intred=(rgb>>16)&0x000000FF;intgreen=(rgb>>8)&0x000000FF;intblue=(rgb)&0x000000FF;这确实是java.awt

java - 将 BufferedImage 或 ImageIO 转换为 ByteBuffer

我通过BufferedImage读取图像获取其RGB值,现在为了写回图像,而不是使用ImageIO,我必须将图像写入HDFS(Hadoop分布式文件系统)。现在我只有一个选项可以使用,那就是使用FSDataOutputStream写入。那么是否可以将RGB值从缓冲图像转换为Java中的ByteBuffer类?请帮助 最佳答案 BufferedImageoriginalImage=ImageIO.read(newFile("c:\\image\\mypic.jpg"));ByteArrayOutputStreambaos=newByt

android - Java BufferedImage/Android 位图

我正在开发一个小库以在Android应用程序和Java桌面应用程序中工作。我需要使用BufferedImage从图像中获取RGB值,但我不能在Andorid中使用BufferedImage。位图反之亦然。有没有办法在Android中实现BufferedImage或者在Java桌面应用中实现Bitmap??谢谢 最佳答案 您可以让您的库不使用其中任何一个,而是使用您定义的具有您需要的所有功能的某个接口(interface)。然后对于Android版本,您使用Bitmap对象实现接口(interface),对于桌面版本,您使用Buffe

java - 如何在 Android Studio 中导入 java.awt.image.BufferedImage

我需要我的Android应用程序来识别BufferedImage,并且我正在使用AndroidStudio。我看到有一种方法可以在Eclipse中导入JRE库系统,但我在AndroidStudio中遇到了麻烦。有什么想法吗?谢谢! 最佳答案 你不能。Android不支持AWT包,您需要更改实现以使用Android类。查看这些类似的问题:PortingAWTgraphicscodetoAndroidHowtoaddjavaAWTimagepackageinAndroidUsingAWTwithAndroid

Java - 通过 TCP 套接字传输 BufferedImage

我的Java不是很好,我需要通过TCP套接字发送一个BufferedImage。我已经设法建立连接(并发送字符串),但我无法真正找出我应该使用哪个Writer来发送和恢复BufferedImage。 最佳答案 您应该ImageIO.write使用某种格式(PNG、JPG等)将图像序列化为字节流。然后您应该通过线路发送字节流。这里的困难是你不知道前方溪流的大小。简单的解决方案是将所有内容保存到内存字节数组中(为此使用ByteArrayOutputStream)然后发送它。或者,如果它不适合内存,你应该做一些聪明的事情(将它保存到临时文

java - 尽可能快地清除透明的 BufferedImage

我有一个使用以下代码创建的透明BufferedImage(我认为它的创建方式不相关):GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevicegs=ge.getDefaultScreenDevice();GraphicsConfigurationgc=gs.getDefaultConfiguration();Rectanglescreen=transformationContext.getScreen();//Createanimagethatsupportstransp

java - 如何在 java 中调整 bufferedimage n graphics2d 的大小?

intwidth=175;Graphics2Dgb=(Graphics2D)g;bufferedimage=(BufferedImage)createImage(width,width);Graphics2Dgraphics=bufferedimage.createGraphics();graphics.setColor(/*this.getBackground()*/Color.red);graphics.fillRect(0,0,width,width);嗨,我有大尺寸的缓冲...我必须调整缓冲图像的大小...请问有人能帮我吗? 最佳答案

java - 无需 I/O 将 BufferedImage 转换为 byte[]

您好我在内存中有一个BufferedImage实例,出于性能考虑,我想将其转换为byte[]编码为base64字符串,而无需I/O操作。我正在使用以下API:ByteArrayOutputStreambaos=newByteArrayOutputStream();ImageIO.write(image,"png",baos);returnbaos.toByteArray();但是这个API还是隐式的将镜像写入了OS的temp目录,当底层的OStemp目录满了无法创建temp文件的时候会导致失败。堆栈跟踪:Causedby:java.io.IOException:Nospacelefto