随着数字设备的普及以及网络带宽的提升,图片这种多媒体资源的使用越来越广泛。无论是网站、移动应用还是其他数字媒体产品,都需要使用大量的图片。而对于图片资源的管理,则需要建立一套图片数据库来进行管理和维护。本文将介绍如何使用 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 的基本设计和实现方式。
相关问题拓展阅读:
应配察该是ms.Read(myphoto, 0, (Int32)ms.Length);
方慎此法出了问题,宽卖迅也就是没有真正把数据存入myphoto byte数组
问题解决了,是字符集的问扒笑尺题。我将数据库及用到的表、字段字符集全部设置为 utf8 后升贺,向数据库中存入图像、word、excel 等非纯文本格式的文件全部通过,并且也没遇到汉字乱春高码的问题。
用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)
文章URL:http://www.mswzjz.cn/qtweb/news40/528340.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能