选项1:将图像转换为字节数组,您可以准备放置请求并插入到表中。同样,也可以实现音频和视频文件。
参见https://docs.oracle.com/javase/7/docs/api/javax/imageio/package-
summary.html
import javax.imageio.ImageIO; private byte[] convertImageToByteArray (String ImageName)throws IOException { byte[] imageInByte; BufferedImage originalImage = ImageIO.read(new File(ImageName)); // convert BufferedImage to byte array ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(originalImage, "jpg", baos); imageInByte = baos.toByteArray(); baos.close(); return imageInByte; }选项2:您可以使用Apache commons lang API通过以下方式进行操作。可能是最好的选择,它将适用于所有对象,包括图像/音频/视频等。这不仅可用于hbase,还可以将其保存在hdfs中
对于前:
byte[] mediaInBytes =org.apache.commons.lang.SerializationUtils.serialize(Serializable obj)
对于反序列化,您可以执行此操作
static Object deserialize(byte[] objectData)
请参阅上方链接中的文档。
示例用法 SerializationUtils
import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.commons.lang.SerializationUtils;public class SerializationUtilsTest { public static void main(String[] args) { try { // File to serialize object to it can be your image or any media file String fileName = "testSerialization.ser"; // New file output stream for the file FileOutputStream fos = new FileOutputStream(fileName); // Serialize String SerializationUtils.serialize("SERIALIZE THIS", fos); fos.close(); // Open FileInputStream to the file FileInputStream fis = new FileInputStream(fileName); // Deserialize and cast into String String ser = (String) SerializationUtils.deserialize(fis); System.out.println(ser); fis.close(); } catch (Exception e) { e.printStackTrace(); } }}


