JAVA中实现图片对象转换成图片文件和字节数组(Byte[ ])的方法讨论
网上关于这方面的讨论其实有很多,但找起来也不太容易,笔者以JMSL4.0画出的chart对象为例阐释这一过程,希望能带来些启发。
import com.imsl.chart.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.stream.FileImageOutputStream;
import javax.imageio.stream.ImageOutputStream;
public class SampleImageIO {
public byte[] getByteArray() {
byte[] b = null;
try{
Chart chart = createChart();//generate image
chart.setScreenSize(new java.awt.Dimension(500,500));
BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE);
chart.paintChart(bi.createGraphics()); //generate buffered image
//感觉bufferedimage经常和imageIO成对出现作为对图像对象的标准转化形式。
File file = new File("D:\\workspace\\SampleImageIO1.png");//deploy file
javax.imageio.ImageIO.write(bi, "PNG", file);//generate file
ByteArrayOutputStream bos = new ByteArrayOutputStream();
javax.imageio.ImageIO.write(bi, "png", bos);
b = bos.toByteArray();//generate byte[]
//check to get the byte[]
//其实byte[]的最大的用途应该是网站的图片动态显示,下面的code只是实验一下,也顺便介绍一下byte[]转换成文件的操作。
String newFileName = "d:\\temp\\wine1.png";
FileImageOutputStream imageOutput = new FileImageOutputStream(new File(newFileName));
imageOutput.write(b, 0, b.length);
imageOutput.close();
System.out.println("Please find image in " + newFileName);
}
catch(Exception ex) {
System.out.println("Exception: " + ex);
ex.printStackTrace();
}
return b;
}
//jmsl画图的code,挺快的,好用,但是人家是收费的library~~,抛砖引玉吧
static Chart createChart() {
Chart chart = new Chart();
AxisXY axis = new AxisXY(chart);
int npoints = 20;
double dx = .5 * Math.PI/(npoints-1);
double x[] = new double[npoints];
double y[] = new double[npoints];
// Generate some data
for (int i = 0; i < npoints; i++){
x[i] = i * dx;
y[i] = Math.cos(x[i]);
}
new Data(axis, x, y);
return chart;
}
}
分享到:
相关推荐
java中把对象转化为byte数组的方法 Java 中将对象转化为 byte 数组的方法是指将 Java 对象序列化为二进制数据流,以便在网络上传输或存储。这种方法可以应用于各种领域,如分布式计算、网络通信、数据存储等。 在 ...
使用`FileOutputStream`类,将字节数组写回到新的图片文件中: ```java File outputFile = new File("output.jpg"); FileOutputStream fos = new FileOutputStream(outputFile); fos.write(imageData); fos....
char short int long float double 转换成byte数组
不过,通常的处理流程是将这些二进制数据读取到内存中,形成一个字节数组流(byte[]),然后可以利用各种库如nodejs中的Buffer类或Java中的ByteBuffer类来对这些数据进行读取、写入和转换。 在技术实现上,如果我们...
在IT领域,尤其是在Web开发中,图片文件与Base64编码字节数组字符串的转换是一种常见的操作。这种转换在不直接使用图片文件路径或URL,而是将图片数据嵌入到HTML、CSS或JavaScript中时非常有用。下面我们将详细探讨...
3. **流操作**:通过`ByteArrayOutputStream`对象来保存图像数据,并利用`ImageIO.write()`方法将缓冲图像写入到字节数组中。 4. **异常处理**:如果在写入过程中发生`IOException`,则捕获并打印堆栈跟踪信息。 5. ...
在Java编程中,二进制、字节数组、字符、十六进制和BCD(Binary-Coded Decimal,二进制编码的十进制)编码转换是常见的数据处理任务。以下将详细介绍这些概念以及如何在Java中进行相关操作。 1. **二进制与十六进制...
2. **读取字节**:调用InputStream的read()方法,将图片文件的每个字节读取到一个字节数组中。 3. **处理字节数组**:读取到的字节数组就是图片的二进制表示,可以根据需要进行传输或存储。 4. **关闭流**:在完成...
Java字节数组与常见类型转换工具,包括byte[] 与int long double float string boolean 等类型的相互转换。
接着,`BufferedImage`可以转化为`byte[]`,通过`ImageIO.write`方法的`getRGB`函数获取图像的像素数据,最后将这些像素数据转换为字节数组。 2. **将字节数组转换为Base64字符串**: Java标准库中的`java.util....
`bytesToInt`方法是大端字节序的还原,它依次将字节数组中的每个元素(从offset开始)左移适当位数并按位或(`|`)操作,最后组合成原始的int值。`bytesToInt2`方法则是小端字节序的还原,它也是通过左移和按位或操作...
这是通过创建一个新的足够大的字节数组`data3`来实现的,其长度等于`data1`和`data2`的长度之和,然后利用`System.arraycopy()`方法将`data1`和`data2`的内容复制到新数组中。 ```java public static byte[] ...
介绍php字符串与byte字节数组转化类,转换一个String字符串为byte数组,将字节数组转化为String类型的数据,转换一个int为byte数组,从字节数组中指定的位置读取一个Integer类型的数据,转换一个shor字符串为byte...
字符类型在 Java 中是 16 位的 Unicode 字符,转换成 byte 数组需要将字符类型转换成 int 类型,然后将 int 类型转换成 byte 数组。例如: ```java public static byte[] charToByteArr(char ch) { byte[] b = new...
在上面的代码中,我们使用了`intToByteArray`方法将整数类型转换为字节数组,以便写入wav文件中。 知识点4:Java中的IO操作 Java中的IO操作是通过使用`java.io`包中的类来实现的。在上面的代码中,我们使用了`...
`putShort`和`getShort`方法用于在字节数组中写入和读取short值。这两个方法内部都采用了位移操作来完成转换。例如,`putShort`方法通过右移8位将高字节存储到索引位置,然后将低字节存储到索引+1的位置。而`...
Java 对象与 byte 数组之间的转换方法 Java 是一种 popular 的编程语言...通过使用 ObjectOutputStream、ByteArrayOutputStream、ObjectInputStream 和 ByteArrayInputStream,可以轻松地实现对象到 byte 数组的转换。
2. **转换为字节数组**:使用`java.nio.file.Files`类的`readAllBytes()`方法将图片文件转换为字节数组。 3. **Base64编码**:使用`java.util.Base64`类的`getEncoder().encodeToString()`方法对字节数组进行Base64...
下面,我们将深入探讨如何在Java中实现图像数据与字节数组之间的相互转换,并分析这一过程中的关键步骤和技术细节。 ### 转换Image数据为byte数组 #### 方法一:`imageToBytes`函数解析 在Java中,将`Image`对象...
- **文件读写**:在读写文件时,可能需要将字符转换为字节数组存储,或者从字节数组中恢复出字符数据。 - **加密解密**:在加密算法中,通常会涉及对字节数组的操作,因此需要将原始字符数据转换为字节数组。 - **...