java如何把图片转换成二进制并存到oracle的blob中,求代码

 我来答
巨蟹神算子
2018-06-11 · TA获得超过437个赞
知道小有建树答主
回答量:292
采纳率:90%
帮助的人:115万
展开全部
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;


public class ImageUtils {

    public static void main(String[] args) {
        String str = img2Binary("C:\\Users\\hny\\Desktop\\favicon.jpg");
        System.out.println(str);
        binary2Img("C:\\Users\\hny\\Desktop\\favicon2.jpg", str);
    }

    /**
     * 图片转二进制字符串
     *
     * @param path 图片路径
     * @return
     */
    public static String img2Binary(String path) {
        File file = new File(path);
        if (!file.exists()) {
            return null;
        }

        try {
            BufferedImage bi = ImageIO.read(file);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            String suffix = getSuffix(path);
            ImageIO.write(bi, suffix, baos);
            byte[] bytes = baos.toByteArray();

            return new sun.misc.BASE64Encoder().encodeBuffer(bytes).trim();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 字符串转图片文件
     *
     * @param path      图片路径
     * @param imgBinary 图片字符串
     */
    public static void binary2Img(String path, String imgBinary) {
        try {
            File file = new File(path);

            byte[] bytes1 = new sun.misc.BASE64Decoder().decodeBuffer(imgBinary);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            BufferedImage bi1 = ImageIO.read(bais);
            String suffix = getSuffix(path);
            ImageIO.write(bi1, suffix, file);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取图片后缀名
     *
     * @param path
     * @return
     */
    private static String getSuffix(String path) {
        int index = path.contains(".") ? path.lastIndexOf(".") : -1;
        if (index > -1) {
            return path.substring(index + 1);
        }
        return null;
    }
}
追问
oracle blob使用String可以吗
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式