从mysql数据库取出的图片数据流如何转换成图片放到文件夹内 - 技术问答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从mysql数据库取出的图片数据流如何转换成图片放到文件夹内 - 技术问答相关的知识,希望对你有一定的参考价值。

现在的问题是开源header显示,开以IMG控制,但是图片多了,数据库就跨了,想把二进制图片文件转化成图片放到文件夹

参考技术A 如果是xp下iis平台中,一般在安装目录下的data文件夹下,或者在c:\documents
and
settings\all
users\application
data\mysql\mysql
server
5.1\data(你的可能是c:\documents
and
settings\all
users\application
data\mysql\mysql
server
5.0\data)
如果安装的时候设置在其他目录下那就要看你设置的目录了;
linux的一般在程序那个文件下下面的data目录下。
你还可以通过mysql的配置文件(windows的在安装目录下的my.ini)中查看datadir="******"的值

Caffe:如何将图片数据转换成lmdb文件

1 图片信息的转换

  在caffe中经常使用的数据类型是lmdb或leveldb;不是常见的jpg,jpeg,png,tif等格式;因此,需要进行格式转换,通过输入你自己的图片目录(下有的大量图片)转换成一个lmdb库文件输出;这个过程一般由caffe工具convert_imageset完成,该工具在编译过的caffe-master/build/tools目录下;

2 格式转换需要的条件

  格式转换准备条件有:1)编译好caffe,而且convert_imageset存在; 2)被转换的图片和目录,注意这些都有格式要求 3)两个标签文件train.txt,val.txt; 4)用命令编辑好的shell脚本create-lmdb.sh;

3 被转换图片文件和存放目录

      按照下面图示安排转换目录:注意该例子中,图片分为0类和1类两个集合;

4 标签文件train.txt和val.txt

转换过程,除了上面提到的图片文件目录,还需要这些图片的标签文件;该文件存放图片文件路径,以及该图片的标签(属于哪个类);一般来说,标签文件有两个,一个描述训练集合-train.txt,一个描述测试集合-val.txt,这两个文件格式有轻微差别,标签文件格式如下:

train.txt文件:

1/T10034.jpg 1
0/096377_01M36.JPG 0
1/T580.jpg 1
1/T4151.jpg 1
0/100333_00F42.JPG 0
0/076902_04M36.JPG 0

注意:该文件包含路径/1和/0;分别存放0,1两类图片。

val.txt文件:

T10034.jpg 1
221169_02M52.JPG 0
T580.jpg 1
T4694.jpg 1
332136_01M17.JPG 0
181085_02M28.JPG 0
133417_02M37.JPG 0

注意:该测试集的标签文件无需分类存储;与train.txt和val.txt相伴随的目录结构图对照;显然,文件内容和目录是密切关联的;

 

5 如何生成标签文件train.txt和val.txt

  当图片规模达到上千万级别,上述两个文件的生成需要程序实现,网上的找到一个shell脚本如下,

    # /usr/bin/env sh  
    DATA=examples/images  
    echo "Create train.txt..."  
    rm -rf $DATA/train.txt  
    find $DATA -name *cat.jpg | cut -d \'/\' -f3 | sed "s/$/ 1/">>$DATA/train.txt  
    find $DATA -name *bike.jpg | cut -d \'/\' -f3 | sed "s/$/ 2/">>$DATA/tmp.txt  
    cat $DATA/tmp.txt>>$DATA/train.txt  
    rm -rf $DATA/tmp.txt  
    echo "Done.."  

  将该文件拷贝到caffe-master目录下执行,会在caffe-master/example/images目录下生成如下的一个train.txt文件:

    cat.jpg 1  
    fish-bike.jpg 2 

  只要将上述文件稍加修改,不难产生你需要的脚本。

 6 用脚本命令生成lmdb

  编写一个shell文件create_lmdb.sh,内容如下:

    #!/usr/bin/en sh  
    DATA=examples/images  
    rm -rf $DATA/img_train_lmdb  
    build/tools/convert_imageset --shuffle \\  
    --resize_height=256 --resize_width=256 \\  
    /home/my_name/caffe/examples/images/train  $DATA/train.txt  $DATA/img_train_lmdb  

7 执行脚本

  设置参数-shuffle,打乱图片顺序。设置参数-resize_height和-resize_width将所有图片尺寸都变为256*256.

  /home/my_name/caffe/examples/images/train 为图片保存的绝对路径。最后,运行这个脚本文件

# sudo sh examples/images/create_lmdb.sh

  就会在examples/images/ 目录下生成一个名为 img_train_lmdb的文件夹,里面的文件就是我们需要的db文件。

 

以上是关于从mysql数据库取出的图片数据流如何转换成图片放到文件夹内 - 技术问答的主要内容,如果未能解决你的问题,请参考以下文章

数据库中图片存储为BLOB类型,如何取出转换

PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组

Android 如何在 Canvas里 放多张图片

将mysql中取出来的字符串转换成数组

关于图片与base64相互转换的工具类

c# 从数据库中读取图片数据流,然后转换成图片显示到网页上?