使用MySQL创建强大的图片数据库(图片数据库mysql)

随着数字设备的普及以及网络带宽的提升,图片这种多媒体资源的使用越来越广泛。无论是网站、移动应用还是其他数字媒体产品,都需要使用大量的图片。而对于图片资源的管理,则需要建立一套图片数据库来进行管理和维护。本文将介绍如何使用 MySQL 创建一套强大的图片数据库。

创新互联技术团队10多年来致力于为客户提供网站设计、成都网站设计、成都品牌网站建设成都全网营销推广、搜索引擎SEO优化等服务。经过多年发展,公司拥有经验丰富的技术团队,先后服务、推广了成百上千家网站,包括各类中小企业、企事单位、高校等机构单位。

之一步:确定数据库需求

在开始创建数据库前,首先需要确定数据库的需求。图片数据库需要包含哪些信息?如何保存和管理这些信息?以下是图片数据库需要包含的信息:

1. 图片名称:图片的名称,用于识别图片和提供给用户查找使用。

2. 图片分类:为了方便用户查找和管理,每张图片都需要进行分类,例如文章插图、产品图片或者广告图片等。

3. 图片描述: 图片描述应该提供图片所呈现的信息,包含图片的主题、角色和场景等,以及其他需要的数据。

4. 图片尺寸:图片文件的尺寸,包括图片的宽度和高度,以及图片的像素数。

5. 图片来源:图片的来源,可以是用户上传、网站采集或者外部供应商提供的。

6. 图片格式:图片文件的格式,包括 JPEG、PNG、GIF、SVG 等。

7. 图片路径:图片文件所在的磁盘路径。

8. 图片上传者:图片的上传者信息,包括上传者的用户名和上传时间。

根据以上需求,我们可以开始设计数据库。

第二步:设计数据库结构

在设计数据库结构前,需要先确定主键。因为图片库中的每张图片都具有独一无二的键值,因此可以选择使用图片文件名称作为主键。接下来,我们可以设计数据库的表结构。

图片信息表(Picture information table):

CREATE TABLE `picture_info` (

`picture_name` varchar(45) NOT NULL,

`picture_category` varchar(45) DEFAULT NULL,

`picture_description` varchar(255) DEFAULT NULL,

`picture_size` varchar(45) DEFAULT NULL,

`picture_source` varchar(45) DEFAULT NULL,

`picture_format` varchar(45) DEFAULT NULL,

`picture_path` varchar(255) DEFAULT NULL,

`picture_upload_by` varchar(255) DEFAULT NULL,

`picture_upload_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),

PRIMARY KEY (`picture_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900__ci;

接下来,我们需要向表中插入一些图片数据。

INSERT INTO `picture_info` (`picture_name`, `picture_category`, `picture_description`, `picture_size`, `picture_source`, `picture_format`, `picture_path`, `picture_upload_by`, `picture_upload_at`)

VALUES (‘Nature01’, ‘Landscape’, ‘Beautiful landscape’, ‘1920*1080’, ‘User Upload’, ‘JPEG’, ‘D:/Pictures/Nature01.jpg’, ‘Linda’, ‘2023-12-03 22:44:49’),

(‘Flower01’, ‘Flower’, ‘Romantic roses’, ‘2400*1600’, ‘User Upload’, ‘JPEG’, ‘D:/Pictures/Flower01.jpg’, ‘John’, ‘2023-12-04 12:23:41’),

(‘Food01’, ‘Food’, ‘Delicious sushi’, ‘1200*800’, ‘User Upload’, ‘JPEG’, ‘D:/Pictures/Food01.jpg’, ‘Bob’, ‘2023-12-05 07:35:23’);

第三步:查询图片数据

在创建了数据库后,我们需要可以根据需要查询图片数据。以下是一些常见的图片查询语句:

1. 查询所有图片信息:

SELECT * FROM picture_info;

2. 根据图片名称查询图片信息:

SELECT * FROM picture_info WHERE picture_name = ‘Nature01’;

3. 根据图片分类查询图片信息:

SELECT * FROM picture_info WHERE picture_category = ‘Flower’;

4. 根据图片上传者查询图片信息:

SELECT * FROM picture_info WHERE picture_upload_by = ‘John’;

结语

以上是如何使用 MySQL 创建一个简单的图片数据库的介绍。当然,一个完善的图片数据库需要更加详细和精细的设计和实现,例如图片缩略图、图片关联和访问控制等。但是,本文所介绍的基础数据库结构可以作为起点,帮助初学者快速了解 MySQL 的基本设计和实现方式。

相关问题拓展阅读:

  • 图像存入MySQL数据库longBLOB出错
  • 如何用ado将二进制图片数据存入mysql数据库

图像存入MySQL数据库longBLOB出错

应配察该是ms.Read(myphoto, 0, (Int32)ms.Length);

方慎此法出了问题,宽卖迅也就是没有真正把数据存入myphoto byte数组

问题解决了,是字符集的问扒笑尺题。我将数据库及用到的表、字段字符集全部设置为 utf8 后升贺,向数据库中存入图像、word、excel 等非纯文本格式的文件全部通过,并且也没遇到汉字乱春高码的问题。

如何用ado将二进制图片数据存入mysql数据库

用ADO方式连的MYSQL, 已经用AppendChunk图片以二进制插入数据库中,下面是读取的不分,写入相反的方式

void DatabaseFile::GetImage()

{

_RecordsetPtr pRs = NULL;

pRs.CreateInstance(__uuidof(Recordset));

_variant_t varChunk;

_variant_t varBLOB;

try

{

CString sql = “select image from visdata where DetectTime = ‘:23:44’;”;

//Open a Recordset

HRESULT hr = pRs->Open(_variant_t(“select * from visdata;”),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);

//read data

long lDataLength = pRs->Fields->GetItem(“image”)->ActualSize;//数据长度可以正确获取

varBLOB = pRs->GetFields()->GetItem(“image”)->GetChunk(lDataLength);

if(varBLOB.vt == (VT_ARRAY | VT_UI1))

{

BYTE *pBuf = NULL;

pBuf = (BYTE*)GlobalAlloc(GMEM_FIXED,lDataLength);//分配空搜扮间

hr = SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);

if (FAILED(hr))

return;

//Build a File

char tmpPath;

GetCurrentDirectory( MAX_PATH,tmpPath);

CString strFileName = “\\temp2.bmp”;//输出图片的文带燃件名

strFileName = tmpPath+strFileName;

CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary );

/*要判断文件是否创世行灶建成功*/

LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)(pBuf));

outFile.WriteHuge(buffer,lDataLength);

GlobalUnlock((HGLOBAL)pBuf);

outFile.Close();

SafeArrayUnaccessData (varBLOB.parray);

}

pRs->Close();

}

用ADO方式连的MYSQL, 已经用AppendChunk图片以二进制插入数据库中,下面是读取的不分,写入相反的方式

void DatabaseFile::GetImage()

{

_RecordsetPtr pRs = NULL;

pRs.CreateInstance(__uuidof(Recordset));

_variant_t varChunk;

_variant_t varBLOB;

try

{

CString sql = “select image from visdata where DetectTime = ‘:23:44’;”;

//Open a Recordset

HRESULT hr = pRs->Open(_variant_t(“select * from visdata;”),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);

//read data

long lDataLength = pRs->Fields->GetItem(“image”)->ActualSize;//数据长度可以正确获取

varBLOB = pRs->GetFields()->GetItem(“image”)->GetChunk(lDataLength);

if(varBLOB.vt == (VT_ARRAY | VT_UI1))

{

BYTE *pBuf = NULL;

pBuf = (BYTE*)GlobalAlloc(GMEM_FIXED,lDataLength);//分配空搜扮间

hr = SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);

if (FAILED(hr))

return;

//Build a File

char tmpPath;

GetCurrentDirectory( MAX_PATH,tmpPath);

CString strFileName = “\\temp2.bmp”;//输出图片的文带燃件名

strFileName = tmpPath+strFileName;

CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary );

/*要判断文件是否创世行灶建成功*/

LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)(pBuf));

outFile.WriteHuge(buffer,lDataLength);

GlobalUnlock((HGLOBAL)pBuf);

outFile.Close();

SafeArrayUnaccessData (varBLOB.parray);

}

pRs->Close();

图片数据库 mysql的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于图片数据库 mysql,使用 MySQL 创建强大的图片数据库,图像存入MySQL数据库longBLOB出错,如何用ado将二进制图片数据存入mysql数据库的信息别忘了在本站进行查找喔。

香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

标题名称:使用MySQL创建强大的图片数据库(图片数据库mysql)
本文路径:http://www.hantingmc.com/qtweb/news40/528340.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联