📅  最后修改于: 2023-12-03 15:00:54.835000             🧑  作者: Mango
在开发中,我们可能需要将一个 GIF 文件转换为 Blob 类型,以便于上传或者通过 AJAX 发送到服务器。本文将介绍如何使用 Java 实现将 GIF 转换为 Blob 的功能。
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class GifToBlob {
public static byte[] gifToBlob(String gifUrl) throws Exception {
URL url = new URL(gifUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
is.close();
byte[] bytes = bos.toByteArray();
bos.close();
return bytes;
}
}
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class GifToBlob {
public static byte[] gifToBlob(String gifPath) throws Exception {
File file = new File(gifPath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
fis.close();
byte[] bytes = bos.toByteArray();
bos.close();
return bytes;
}
}
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class GifToBlob {
public static byte[] gifToBlob(String gifUrl) throws Exception {
Document doc = Jsoup.connect(gifUrl).get();
Element img = doc.select("img").first();
String src = img.attr("src");
InputStream is = new URL(src).openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
is.close();
byte[] bytes = bos.toByteArray();
bos.close();
return bytes;
}
}
在 Java 中,我们可以使用 URL 和 HttpURLConnection 或者 File 和 FileInputStream 获得 GIF 文件,并通过 ByteArrayOutputStream 将其转换为 byte[] 数组。我们还可以使用 JSoup 获得 HTML 中的 GIF 文件,并将其转换为 byte[] 数组。
不论使用哪种方式,最终我们都可将 GIF 文件成功转换为 Blob 类型,并在上传或请求操作中使用。