数据库的存储系列———将图片存储到数据库

数据库的存储系列———将图片存储到数据库数据库的存储—系列———将图片存储到数据库在很多时候我们都使用数据库才存储我们的数据,然而我们通常在数据库里面存放的数据大多都支持数或者是一些字符,那么如果我们想在数据库里面存放图片,那么应该要怎么做的?第一,我们可以将图片所在的路径或者URI存入到数据库里面,这样简单方便。不过这样的缺点也很显然,就是图片路径改变的时候,我们没有办法通过数据库来获取这一张图片。所以这种方法并不是我们所想要的将图片存

大家好,又见面了,我是你们的朋友全栈君。

数据库的存储系列———将图片存储到数据库

在很多时候我们都使用数据库才存储我们的数据,然而我们通常在数据库里面存放的数据大多都支持数或者是一些字符,那么如果我们想在数据库里面存放图片,那么应该要怎么做的?

第一,我们可以将图片所在的路径或者URI存入到数据库里面,这样简单方便。不过这样的缺点也很显然,就是图片路径改变的时候,我们没有办法通过数据库来获取这一张图片。所以这种方法并不是我们所想要的将图片存储到数据的方法。

第二,将图片转化成二进制字节流才存储到数据库。在查看数据库所支持的基本类型当中,我们不难发现数据库支持BLOB和CLOB这种数据类型。那么我们就将图片以这种形式存入到数据库,然后在从数据库中还原这图片

public class ImageUtil { 
   


    public static void main(String[] args) throws IOException  {
        String imagePath = "C:\\Users\\pc\\Desktop\\446968702368648824.jpg";
        byte[] bytes = null;
// 将图片转化为二进制流
        bytes = imageToByte(imagePath);

        for (byte byte1 : bytes) {
            System.out.print(byte1);
        }

// 将二进制图片转化为字符串
// String string = new String(bytes);
// System.out.println(string);

        String path = "C:\\Users\\pc\\Desktop\\446.jpg";
// 将二进制流转化为图片
        byteToImage(bytes, path);

    }

    public static byte[] imageToByte(String path) throws IOException {
        FileInputStream fileInputStream = new FileInputStream(new File(path));
        byte[] bytes = new byte[fileInputStream.available()];
        fileInputStream.read(bytes);
        fileInputStream.close();

        return bytes;
    }
    //输出图像到新的路径
    public static void byteToImage(byte[] bytes,String newPath) throws IOException {
        FileOutputStream fileOutputStream = new FileOutputStream(new File(newPath));
        fileOutputStream.write(bytes);
        fileOutputStream.close();
    }

}

这样就可以通过将图片的字节流放入到数据库中存储了,如果要使用的话,将其转化出来就可以了。不过这里图片不能够太大,BLOB最大能够支持64K的图片,不同数据库有不同的数据类型,大家可以去找找。当然以上代码还提供了能将二进制流变为了字符串的方法(显示看到的是乱码)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158243.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月12日 下午7:16
下一篇 2022年7月12日 下午7:16


相关推荐

  • 开发者一定要了解的六款大数据采集平台

    开发者一定要了解的六款大数据采集平台    随着大数据越来越被重视,数据采集的挑战变的尤为突出。今天为大家介绍几款数据采集平台:  ApacheFlume  Fluentd  Logstash  Chukwa  Scribe  SplunkForwarder  大数据平台与数据采集  任何完整的大数据平台,一般包括以下的几个过程:  数据采集  数据存储  数据处理  数据展现…

    2022年5月1日
    103
  • PHP pathinfo() 函数

    PHP pathinfo() 函数

    2021年9月20日
    53
  • ipad分屏功能怎么使用_es6 reflect

    ipad分屏功能怎么使用_es6 reflectpadStart方法使用说明jspadStart是什么padStart()方法用另一个字符串填充当前字符串(如果需要的话,会重复多次),以便产生的字符串达到给定的长度。从当前字符串的左侧开始填充。实例’abc’.padStart(10);//”abc”‘abc’.padStart(10,”foo”);//”foofoofabc”‘abc’.padStart(6,”123465″);//”123abc”‘abc’.padStart(8,”0″)

    2025年10月9日
    5
  • vmware15win7能用吗_虚拟机重装系统

    vmware15win7能用吗_虚拟机重装系统step1:打开Vmware15虚拟机工具step2:新建虚拟机step3:初学者建议选择典型配置step4:安装操作系统,选择物理机上操作系统安装的光盘文件step5:此次安装的是NelKylin7系统,内核是Linux系统step6:命名你想要的虚拟机名称和存放的内存位置step7:设置磁盘大小(不宜过小),初学者建议将虚拟机存储为单个文件step8:点击完成,虚拟机就创建好了step9:开启虚拟机,完成操作系统的初始化step10:安装系统,点击enterstep11:选择各项

    2022年8月10日
    59
  • 2016下半年总结[通俗易懂]

    2016下半年总结[通俗易懂]2016下半年总结

    2022年4月25日
    32
  • Cursor + GitHub MCP,自动管理代码版本,效率提升200%(手把手教程)

    Cursor + GitHub MCP,自动管理代码版本,效率提升200%(手把手教程)

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号