精华内容
下载资源
问答
  • MySQL存放图片 环境 Python 3.7.4 pymysql 8.0.11 MySQL Community Server 实现代码 import pymysql class Database(): ''' Description: database demo to store image in MySQL RDBMS Attributes: ...

    Python程序向MySQL存放图片

    环境

    Python 3.7.4
    pymysql
    8.0.11 MySQL Community Server
    

    读取图片

    以二进制格式读取图片

    with open("./test.jpg", "rb") as file:
    	image = file.read()
    

    创建存放图片的表

    存放图片字段的属性为longblog,即long binary large object

    def create_image_table(self):
    	sql = 'create table if not exists picture ( \
            image longblob);'
    
        try:
            self.cursor.execute(sql)
    
            self.connection.commit()
    
        except pymysql.Error:
            print(pymysql.Error)
    

    存入MySQL

    将二进制格式的图片数据存入MySQL

    def insert_image(self, image):
        sql = "insert into picture(image) values(%s)"
        self.cursor.execute(sql, image)
        self.connection.commit()
    

    保存MySQL查询得到的图片数据为图片

    以二进制的格式写出图片

    def get_image(self, path):
        sql = 'select * from picture'
        try:
            self.cursor.execute(sql)
            image = self.cursor.fetchone()[0]
            with open(path, "wb") as file:
                file.write(image)
        except pymysql.Error:
            print(pymysql.Error)
        except IOError:
            print(IOError)
    

    实现代码

    import pymysql
    
    
    class Database():
    	
    	'''
    		Description:
    			database demo to store image in MySQL RDBMS
    		Attributes:
    			None
    	'''
        
        def __init__(self):
            self.connection = pymysql.connect(host='<host name>',user='<user name>',passwd='<password>',db='<database name>',charset='utf8')
            self.cursor = self.connection.cursor()
    
    	'''
    		Description:
    			create table to store images
    		Args:
    			None
    		Return:
    			None
    	'''
        
        def create_image_table(self):
            sql = 'create table if not exists picture ( \
                image longblob);'
    
            try:
                self.cursor.execute(sql)
    
                self.connection.commit()
    
            except pymysql.Error:
                print(pymysql.Error)
    	
    	'''
    		Description:
    			insert image into table
    		Args:
    			image:
    				image to store
    		Returns:
    			None
    	'''
    
        def insert_image(self, image):
            sql = "insert into picture(image) values(%s)"
            self.cursor.execute(sql, image)
            self.connection.commit()
    	
    	'''
    		Description:
    			get image from database
    		Args:
    			path:
    				path to save image
    		Returns:
    			None
    	'''	
    
        def get_image(self, path):
            sql = 'select * from picture'
            try:
                self.cursor.execute(sql)
                image = self.cursor.fetchone()[0]
                with open(path, "wb") as file:
                    file.write(image)
            except pymysql.Error:
                print(pymysql.Error)
            except IOError:
                print(IOError)
                
    	'''
    		Description:
    			destruction method
    		Args:
    			None
    		Returns:
    			None
    	'''
    	
        def __del__(self):
            self.connection.close()
            self.cursor.close()
    
    if __name__ == "__main__":
        database = Database()
        # read image from current directory
        with open("./test.jpg", "rb") as file:
            image = file.read()
    
        database.create_image_table()
        database.insert_image(image)
    
        database.get_image('./result.jpg')
    

    测试结果

    最后

    • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!
    展开全文
  • Java程序向MySQL存放图片

    热门讨论 2020-10-11 14:04:47
    Java MySQL存放图片 环境 IDEA JDK 11 8.0.11 MySQL Community Server mysql-connector-java-8.0.21.jar 导入JAR包 MySQL官网下载页面 实现代码 MySQL类 连接MySQL数据库,其中<host name>为MySQL数据库公网...

    Java程序向MySQL存放图片

    环境

    IDEA
    JDK 11
    8.0.11 MySQL Community Server
    mysql-connector-java-8.0.21.jar
    

    导入JAR包

    MySQL官网下载页面
    IDEA导入JAR包

    实现代码

    MySQL类

    连接MySQL数据库,其中<host name>MySQL数据库公网IP,本地则为127.0.0.1<port>为端口号,MySQL数据库默认为3306<user name>为用户名,<password>为密码

    package com.example.mysql;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    package com.example.mysql;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class MySQL {
        private final String URI = "jdbc:mysql://<host name>:<port>/<database name>/image?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        private final String USER_NAME = "<user name>";
        private final String PASSOWRD = "<password>";
        private final String DRIVER = "com.mysql.cj.jdbc.Driver";
        private Connection connection = null;
        public MySQL() {
            try {
                Class.forName(DRIVER);
                connection = DriverManager.getConnection(URI, USER_NAME, PASSOWRD);
                System.out.println("MySQL Connect successfully!");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    	
    	public Connection getConnection() {
            return connection;
        }
    }
    

    Database类

    读取图片已二进制格式存入MySQL数据库,从MySQL读取二进制格式的字段,输出保存为图片

    package com.example.mysql;
    
    import java.io.*;
    import java.sql.*;
    
    public class Database {
        private Connection connection = null;
        private PreparedStatement preparedStatement = null;
        public Database() {
            MySQL mysql = new MySQL();
            // get connection
            connection = mysql.getConnection();
        }
    
        public void createImageTable() {
        	// create table to save image
        	// long binary largest object field
            String sql = "create table if not exists picture (image longblob);";
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.execute();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        public void insertImage(String path) {
            String sql = "insert into picture(image) values(?)";
            File imageFile = new File(path);
    
            try {
            	// read image, transform image into binary format
                FileInputStream fileInputStream = new FileInputStream(imageFile);
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setBlob(1, fileInputStream);
    
                if (preparedStatement.executeUpdate() > 0) {
                    System.out.println("Insert successfully!");
                } else {
                    System.out.println("Insert failed!");
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    
        private void saveImage(FileOutputStream fileOutputStream, InputStream inputStream) {
            int len;
            byte buffer[] = new byte[1024];
    		// transform binary format data into .jpg image format
            while (true) {
                try {
                    if ((len = inputStream.read(buffer)) == -1) {
                        break;
                    }
                    fileOutputStream.write(buffer, 0, len);
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            }
        }
    
        public void getImage(String path) {
        	// get image from MySQL database
            String sql = "select * from picture";
            Blob imageFile;
    
            try {
                FileOutputStream fileOutputStream = new FileOutputStream(path);
                preparedStatement = connection.prepareStatement(sql);
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    imageFile = resultSet.getBlob("image");
                    InputStream inputStream = imageFile.getBinaryStream();
                    saveImage(fileOutputStream, inputStream);
    
                    System.out.println("Get image successfully!");
                }
    
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            Database database = new Database();
            database.createImageTable();
            String path = "./res/pictures/image.jpg";
            database.insertImage(path);
            String savePath = "./res/pictures/result.jpg";
            database.getImage(savePath);
        }
    }
    
    

    测试结果

    Terminal

    MySQL

    最后

    • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解!
    展开全文
  • 2、直接将图片存放到数据库中,可以创建存放图片的数据类型是:longblob  eg:可以创建这个表: CREATE TABLE `test`.`pic` ( `idpic` int(11) NOT NULL auto_increment, `caption` varchar(45) NOT NULL default...


    图片的存储方式:

    1、常用:存储图片的url

    2、直接将图片存放到数据库中,可以创建存放图片的数据类型是:longblob 

    eg:可以创建这个表:

    CREATE TABLE `test`.`pic` (
     `idpic` int(11) NOT NULL auto_increment,
     `caption` varchar(45) NOT NULL default '',
     `img` longblob NOT NULL,
     PRIMARY KEY (`idpic`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    创建一个可以存放图片的数据库的表。

    数据类型参考可以查看w3c,或者参考链接:http://www.runoob.com/mysql/mysql-data-types.html


    创建数据库的时候,我们可以通过下面的g关键字段来进行设置:

    自动增长关键字: AUTO_INCREMENT

    用于设置关键字是自动增加的的功能 ,关键语句:

     alter table 表名 change 列名称 列新名称 新数据类型;
     修改文件类型


    mysql的终端上显示数据库的表的字段:

    show columns from images;
    显示列,即为显示字段属性的


    操作数据库的基本操作可以参考下面的链接:

    http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d16


    mysql创建外键:

    http://www.cnblogs.com/xiangxiaodong/archive/2013/05/05/3061049.html


    设置数据库的编码:

    http://www.jb51.net/article/22501.htm




    展开全文
  • 关于mysql数据库图片存放的问题

    千次阅读 2017-11-06 16:02:58
    最近做一个项目,图片管理系统,客户说要把图片数据放到数据库中去,不是存图片地址, 因为以后实际应用中,每张图片容易都会在5-10M之间,现在测试的时候,添加1000张图片,就导致执行update 或者 select等语句...

    目前,公司系统所有图片在数据库中以byte 形式存储,利用ByteBuffer来操作,图片在数据库的存储类型为blob

    但是随着图片的越来越多,读取速度越来越慢,占的内存也越来越大,所以想找个机会把这个地方改良一下,网上找到了网友提问,以及相应的解决方案,自己先尝试一下,成功了上代码:


    网友提问:最近做一个项目,图片管理系统,客户说要把图片数据放到数据库中去,不是存图片地址,   因为以后实际应用中,每张图片容易都会在5-10M之间,现在测试的时候,添加1000张图片,就导致执行update 或者 select等语句非常慢,导致事务超时,当然程序也就执行不下去了。大家有没有什么好的建议呢,现在项目采用webwork+hibernate 。针对这种项目,是不是hibernate就不适用了,容易导致内存溢出,  数据库方面,现在图片数据和图片的基本信息(图片名称,上传者,上传时间,图片类型等)放同一张表,是不是要图片数据和图片基本信息分开比较好。请思路和有经验的朋友们赐教。谢谢。

    问题补充:
    图片一定要放数据库,图片需要比较高的安全性,报社用的图片,客户一开始就强调要放数据库。没办法说服。
    问题补充:

    客户的要求,当初一直和客户一直反对放数据库,但客户一直强调要这样,能有什么办法


    解决方案:如果没办法的话,就把图片放在一个单独的表(image_data)里面,(id,image_data), 

    图片以二进制数据的形式保存。 
    另外一张表存图片的相关信息(image_info)。 
    尽量不去对image_data表进行查询。查询的时候,先找出image_info里面的id,然后用这个id直接去抓image_data中的图片信息。

    展开全文
  • 做了一个web,主要用来做图片展示,想买个jsp空间,可买的jsp空间只有3、4百M,这样如果图片上传多了,就放不下了,但是购买的jsp...我想能不能通过把图片存放到数据库中,从而达到节省空间的目的呢?欢迎大家提出看法
  • MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。 MySQL的四种BLOB类型 类型 大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K ...
  • 这样就可以根据数据库的path值来在文件中调用指定的图片,username可以用来作为用户上传标识,比如是哪个用户上传的,或者以后专门为哪个用户所用 上传界面代码index.php <!DOCTYPE html> <...
  • 在阿里云oss存了一些图片的链接,为了得到缩略图,遂决定多加一个表项向已有的链接后面加字符串。 ?x-oss-process=image/auto-orient,1/resize,m_lfit,w_230,limit_0 //意思是一个宽度为230px,高度自动的缩略图 ...
  • MySQL中BLOB存放图片在页面中显示

    千次阅读 2010-10-26 20:41:00
    mysql_query("SET NAMES 'GB2312'"); //blob 类型是二进制的,不需要设置语言编码 $result = mysql_query ( " select * from student where picnum= $_GET [picnum] " ); $row = mysql_fetch_object ( $...
  • 之前遇到一个问题,就是在将项目迁移到别的服务器的时候出现图片路径不对的问题,因为存放图片的方式是在数据库中存放图片路径,但是路径前却带了域名,这样换一台服务器换了域名之后,访问图片的路径还迁移前的...
  • 我使用的是vs2015 获取到了.bmp的width和height 如何将获取到的信息存储到mysql数据库中image中 并能查看到该图片??? 或者哪位大神有没有将bmp格式的图片读取到之后存储到mysql数据库中??? ...
  • Mysql图片存取

    2013-08-30 19:31:52
    创建数据库表 photo: CREATE TABLE Photo( ...FILE BLOB//存放二进制文件,如图片 ); 把图片插入数据库: //前提数据库已拿到连接 public class MysqlInsertPhoto { public static void main(String args
  • 存:在进行上传图片时,为了防止图片名重复先使用时间戳对图片名进行重命名,然后再把图片放在Web项目路径下,最后把图片的路径存放在数据库中。 取:从数据库中取出相应的图片路径,回显到前端页面 工具: IDEA ...
  • 数据库存放字段(sign_pic)类型:longblob MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob),...
  • MYSQL中插入,读写图片!

    万次阅读 多人点赞 2012-03-27 21:26:08
    开发环境:MyEclipse+MySql 1, 随便找一个数据库建一张表,我这里用的是mysql数据库, (1)切换到mysql数据库:use mysql; (2)建表create table image( ...PS:注意存放图片那个字段的类型,为longblob
  • [图片说明](https://img-ask.csdn.net/upload/201906/26/1561517599_328219.png) # **这是什么原因,我的/etc/init.d/目录下也没有mysqld文件是什么情况,求大神解答** ![图片说明]...
  • 简单,向MySql中存入图片

    千次阅读 2020-07-10 09:52:15
    学习JavaWeb的时候,接触到了mysql,想到向表中存放图片,那今后照片管理就可以用sql语句来执行了,所以尝试了一下,还尝试了蛮久的。 1.效果 不是存了个字符串哈,可以看左边的数据类型。 2. 获取blob数据 我们...
  • 对于图片mysql提供了blob的数据类型,当然我们也可以把byte数组翻译成string存储。 首先创建数据库,然后blob一般接受blob和inputstream,然后我们就可以这样把一个icon存放在blob里 对于时间,我们可以有很多...
  • 使用PhpMysql实现图片文件上传下载

    千次阅读 2016-01-14 09:55:59
    Web server 部分 用phpMyAdmin创建数据中的表photos。用于存放image的路径 CREATE TABLE `a2393827_db`.`photos` ( `id` INT NOT NULL AUTO_INCREMENT , `image` VARC
  • 一、我现在想尝试从mysql里获取用户信息并且验证它 ![图片说明](https://img-ask.csdn.net/upload/201912/28/1577497182_450561.png) 假设:我现在输入了-->用户名:aaa; 密码:aaa 数据库里有这个用户; 那么...
  • 首先,在数据库中创建一个表,用于存放图片:复制代码 代码如下:CREATE TABLE Images(Id INT PRIMARY KEY AUTO_INCREMENT, Data MEDIUMBLOB);然后运行如下PYTHON代码进行: 复制代码 代码如下:# -*- coding: UTF-8 -...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 437
精华内容 174
关键字:

mysql存放图片

mysql 订阅