- 浏览: 905237 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (354)
- Java学习 (122)
- jstl el表达式 (2)
- struts2 标签 (6)
- Ibatis (14)
- S2SH (3)
- struts2 json (2)
- JDK1.6-JDK1.5 (1)
- spring mvc (1)
- 工作项目开发 (8)
- jxl (3)
- jqgrid (9)
- POI (10)
- jQuery (9)
- itext (11)
- oracle (56)
- js (20)
- treegrid (1)
- myeclipse (4)
- Jforum (1)
- iphone (2)
- 角色权限 (1)
- Log4J (5)
- WebService (1)
- spring定时 (1)
- swfupload (12)
- Servlet (1)
- KindEditor (1)
- Java学习,httpclient (2)
- http (4)
- datagrid (1)
- KinSlideshow (1)
- android (7)
- html (1)
- CSS (1)
- 正则表达式 (3)
- easyui (6)
- JSONP (1)
- SQLServer (1)
- tomcat (2)
- Spring (4)
- Jquery plugins (2)
- windows7 (3)
- bootstrap (1)
- FreeMarker (1)
- flex (1)
- ExtJS (6)
- tTP-Link (1)
- MySQL (4)
- JavaScript (3)
- Notepad++ (1)
- ora (1)
- C语言 (1)
- 计算机 (1)
- DWR (2)
- 吉他 (1)
- hibernate (1)
- eclipse (1)
最新评论
-
天使建站:
这里的这篇文章写得很好:http://www.aijquery ...
jS 如何删除二维数组的重复项 -
羽翼的心动:
POI处理的格式单一,无法导出格式比较复杂的表格。POI不能使 ...
poi合并单元格同时导出excel -
zhixinhuacom:
jqgrid 按回车键默认提交数据,怎么做才能时回车不提交数据 ...
JQgrid要实现在jqGrid表格上动态的加行、删行,最后点击“保存”按钮,与后台交互,保存数据 -
w_mojian180:
nice 很多情况都是因为引入文件导入
Uncaught SyntaxError: Unexpected token < -
springdata_springmvc:
bootstrap demo实例教程源代码下载:http:// ...
bootstrap-switch开关按钮表单插件
转载自:http://www.cnblogs.com/XL-Liang/archive/2011/12/30/2307220.html
BufferedImage与byte[]互转
一、需要用到的类
javax.imageio.ImageIO;
java.io.*;
二、为什么要将BufferedImage转为byte数组
在传输中,图片是不能直接传的,因此需要把图片变为字节数组,然后传输比较方便;只需要一般输出流的write方法即可;
而字节数组变成BufferedImage能够还原图像;
三、如何取得BufferedImage
BufferedImage image = ImageIO.read(new File("1.gif"));
四、BufferedImage ---->byte[]
ImageIO.write(BufferedImage image,String format,OutputStream out);方法可以很好的解决问题;
参数image表示获得的BufferedImage;
参数format表示图片的格式,比如“gif”等;
参数out表示输出流,如果要转成Byte数组,则输出流为ByteArrayOutputStream即可;
执行完后,只需要toByteArray()就能得到byte[];
五、byte[] ------>BufferedImage
ByteArrayInputStream in = new ByteArrayInputStream(byte[]b); //将b作为输入流;
BufferedImage image = ImageIO.read(InputStream in); //将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
六、显示BufferedImage
public void paint(Graphics g){
super.paint(g);
g.drawImage(image); //image为BufferedImage类型
}
七、实例
要求:编写一个网络程序,通过Socket将图片从服务器端传到客户端,并存入文件系统;
Server端:
package org.exam3;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.ImageIO;
public class T6Server {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(8888);
Socket s = server.accept();
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
BufferedImage image = ImageIO.read(new File("1.gif"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
boolean flag = ImageIO.write(image, "gif", out);
byte[] b = out.toByteArray();
dout.write(b);
s.close();
}
}
Client端:
package org.exam3;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.PrintWriter;
import java.net.Socket;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class T6Client extends JFrame {
JButton button;
MyPanel panel;
public T6Client() {
setSize(300, 400);
button = new JButton("获取图像");
add(button,BorderLayout.NORTH);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
Socket s = new Socket("localhost",8888);
PrintWriter out = new PrintWriter(s.getOutputStream());
out.print("a");
DataInputStream in = new DataInputStream(s.getInputStream());
byte[]b = new byte[1000000];
in.read(b);
ByteArrayInputStream bin = new ByteArrayInputStream(b);
BufferedImage image = ImageIO.read(bin);
ImageIO.write(image, "gif", new File("2.gif"));
s.close();
} catch (Exception e) {
}
}
});
panel = new MyPanel();
add(panel);
}
public static void main(String[] args) throws Exception {
T6Client frame = new T6Client();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
发表评论
-
Java中List Set Map 是否有序等总结
2015-05-05 11:09 730转http://blog.csdn.net/zhengqiq ... -
ava操作word宏
2015-04-29 10:44 536转:http://aa8945163.iteye.com/b ... -
System.load 和 System.loadLibrary详解
2015-04-09 10:50 654转:http://www.cnblogs.com/h ... -
(转)谈谈对Java中Unicode、编码的理解
2015-03-03 11:07 425转:http://www.cnblogs.com/newst ... -
HTTP status code 说明
2015-01-15 16:15 483200 – 服务器成功返回 ... -
JAVA邮件发送
2015-01-13 16:56 632转:http://www.cnblogs.com/codep ... -
Java排序算法 记录
2015-01-13 10:24 423转:http://www.cnblogs.com/dians ... -
java中volatile关键字
2015-01-05 14:30 491转:http://www.cnblogs.com/aigon ... -
4.1 Servlet简介
2014-12-22 16:34 417转:http://www.blogjava.net/ ... -
在 Windows 中实现 Java 本地方法
2014-12-21 15:18 471转:http://www.ibm.com/devel ... -
严重: Error listenerStart
2014-11-18 17:14 4212007-5-31 14:27:13 org.apache. ... -
java.security.AccessControlException: access denied 的解决方法
2014-11-07 22:07 3337转:http://blog.csdn.net/maomao ... -
Linux下反斜杠号"\"
2014-10-27 13:36 2503转:http://www.cnblogs.com/Muyou ... -
@override在JDK1.5和JDK1.6中用法区别
2014-10-14 22:54 403转:http://gaowenming.iteye.com/ ... -
ClientAbortException:java.io.IOException解决方案
2014-09-09 10:13 12561转:http://blog.sina.com.cn/s/bl ... -
SchedulerFactoryBean 注入
2014-08-26 10:19 821转:http://blog.csdn.net/neutro ... -
Spring 3整合Quartz 2实现定时任务二:动态添加任务
2014-08-26 09:47 823转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务一:常规整合
2014-08-26 09:45 665转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
2014-08-26 09:21 2248转http://my.oschina.net/u/1177 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2014-08-18 16:45 379今天新建了一个基于jdk6的工程,在tomcat中部署之后, ...
相关推荐
public static BufferedImage iplToBufImgData(IplImage ipl,BufferedImage image ) public static IplImage BufImgToIplData(IplImage ipl,BufferedImage bi)
否则,创建一个新的`BufferedImage`实例,其宽度和高度与原始`Image`相同,并根据`Image`的色彩模型和透明度选择适当的`BufferedImage`类型。然后,使用`Graphics2D`将`Image`绘制到`BufferedImage`上,完成转换过程...
当涉及到网络传输或存储时,将图像数据转换为字节数组(byte array)成为了一种实用且高效的手段。下面,我们将深入探讨如何在Java中实现图像数据与字节数组之间的相互转换,并分析这一过程中的关键步骤和技术细节。...
以上就是关于在Java、Python和C#中实现图像与字节数组互转的方法。在实际应用中,确保正确处理异常和资源管理是非常重要的。此外,选择正确的图像格式(如JPEG、PNG等)会影响转换后的文件大小和质量。在处理大量...
1. **创建缓冲图像**:首先创建一个与输入图像尺寸相同的`BufferedImage`对象,类型为`BufferedImage.TYPE_INT_ARGB`,这是为了确保图像具有透明度通道。 2. **绘制图像**:使用`Graphics`对象将原始图像绘制到缓冲...
总结来说,理解和掌握`Mat`与`BufferedImage`之间的转换对于在Java环境中有效地使用OpenCV至关重要。无论是进行图像显示、保存还是进一步的处理,这种转换都是不可或缺的步骤。熟练运用这些转换方法,可以极大地扩展...
BufferedImage rotatedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); // 创建Graphics2D对象 Graphics2D g2d = rotatedImage.createGraphics(); // 平移坐标系统到图像中心 g2d....
Java中使用BufferedImage判断图像通道顺序并转RGB/BGR 在Java中,使用BufferedImage处理图像时,需要判断图像的通道顺序,判断图像是否为RGB或BGR格式,并对其进行相应的转换。本文将详细介绍如何使用BufferedImage...
下面,我们将深入分析与BMP文件格式相关的知识点,以及如何在Java中实现`BufferedImage`到BMP文件的转换。 ### BMP文件结构 BMP文件由多个部分组成,主要包括文件头(File Header)和信息头(Info Header),以及...
要实现JPEG转RAW,首先需要确保项目中引入了JAI-ImageIO库。你可以通过Maven或Gradle等构建工具添加依赖。接着,你可以使用以下步骤进行转换: 1. 创建`BufferedImage`对象,读取JPEG文件。 2. 获取`RenderedImage`...
本文将深入探讨如何将图片数据读取到`byte[]`数组,并如何合并由多次`InputStream`读取产生的缓冲`byte[]`。这涉及到Java编程语言中的IO流操作以及数据转换。 首先,我们来理解“读取图片数据到byte[]数组”。在...
在Java编程语言中,`BufferedImage`类是用于创建和操作图像的重要工具。这个类提供了丰富的功能,包括读取、写入、绘制和修改图像。在这个特定的场景中,我们利用`BufferedImage`来实现一个有趣的功能:将四张图片...
本文将详细讲解如何使用Java实现PDF与JPG文件的互转。 首先,我们需要理解转换过程涉及的主要技术。PDF转JPG主要涉及到PDF解析和图像渲染,而JPG转PDF则需要图像处理和PDF生成。Java提供了一些库来支持这些操作,如...
- 使用`createCompatibleImage()`方法创建一个新的`BufferedImage`对象,确保颜色模型与原始图像兼容,这样在绘制时能提高效率。 - 考虑性能:对于大量或大尺寸的图片,直接操作原始图像可能会很慢。可以先缩小...
在Java编程中,将图片与Base64编码进行相互转换是一项常见的任务,特别是在网络传输、存储和显示图像数据时。Base64是一种用于将任意二进制数据转换为可打印ASCII字符的编码方式,这对于在HTTP协议下传输二进制数据...
在Android开发中,有时我们需要对图像进行处理,例如解析JPEG图像并将其转换为BufferedImage对象。BufferedImage是Java AWT库中的一个类,提供了一种更高级别的图像操作接口。在Android环境中,虽然不直接支持AWT库...
这将返回一个`byte[]`,与最初读取图片时的字节数组相同。 4. **将字节数组转换回图片**: 有了解码后的字节数组,我们再次使用`ImageIO.write`方法,将这些字节写入一个新的`BufferedImage`对象,然后可以保存或...
总之,通过理解颜色空间转换、图片数据的16进制表示,以及Java中的图像处理技术,我们可以实现YCbCr到RGB的转换,以及图片与16进制字符串之间的相互转换。这在图像处理、数据存储和网络传输等领域有着广泛应用。
public static byte[] writeJPEGBytes(BufferedImage source) { if (null == source) throw new NullPointerException(); ByteArrayOutputStream output = new ByteArrayOutputStream(); JPEGImageEncoder ...
Java 中 ImageReader 和 BufferedImage 获取图片尺寸实例 Java 中获取图片尺寸有多种方法,其中使用 ImageReader 和 BufferedImage 是两种常见的方法。本文将对这两种方法进行详细介绍,并提供相应的代码实现。 ...