图片格式blob取出byte[],前几位字符不要
时间: 2023-12-06 20:05:46 浏览: 95
js实现把图片的绝对路径转为base64字符串、blob对象再上传
如果你从数据库中读取了一张图片,其格式为BLOB,需要将其转换为byte[],并且去掉前几位字符,可以按照以下步骤进行操作:
1. 从数据库中读取BLOB字段,得到一个java.sql.Blob对象:
```java
PreparedStatement pstmt = conn.prepareStatement("SELECT image_data FROM images WHERE id = ?");
pstmt.setInt(1, 1); // 假设要读取id为1的图片数据
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
Blob blob = rs.getBlob("image_data");
// 这里需要注意,如果BLOB字段可能为null,需要判断一下
if (blob != null) {
// 接下来的操作
}
}
```
2. 将BLOB转换为byte[]:
```java
byte[] bytes = blob.getBytes(1, (int) blob.length());
```
在上述代码中,getBytes()方法将BLOB转换为byte[]。第一个参数表示要读取的起始位置,一般为1;第二个参数表示要读取的字节数,这里我们直接读取整个BLOB字段的内容。
3. 去掉前几位字符:
如果你知道前几位字符的长度,可以使用Arrays.copyOfRange()方法来去掉这些字符:
```java
int offset = 5; // 假设要去掉前5个字符
byte[] data = Arrays.copyOfRange(bytes, offset, bytes.length);
```
在上述代码中,我们使用Arrays.copyOfRange()方法来复制从offset位置开始到数组末尾的所有元素,得到一个新的byte[]。
如果你不知道前几位字符的长度,可以先将byte[]转换为字符串,然后使用substring()方法去掉前几个字符,最后再将字符串转换回byte[]:
```java
String str = new String(bytes);
int offset = 5; // 假设要去掉前5个字符
byte[] data = str.substring(offset).getBytes();
```
在上述代码中,我们先将byte[]转换为字符串,去掉前几个字符,然后再将字符串转换回byte[]。需要注意的是,这种方法可能会改变图片的格式,因为图片格式的前几个字节通常是固定的。所以,如果你不确定前几位字符的长度,最好不要使用这种方法。
阅读全文