新聞中心
隨著數(shù)字設(shè)備的普及以及網(wǎng)絡(luò)帶寬的提升,圖片這種多媒體資源的使用越來(lái)越廣泛。無(wú)論是網(wǎng)站、移動(dòng)應(yīng)用還是其他數(shù)字媒體產(chǎn)品,都需要使用大量的圖片。而對(duì)于圖片資源的管理,則需要建立一套圖片數(shù)據(jù)庫(kù)來(lái)進(jìn)行管理和維護(hù)。本文將介紹如何使用 MySQL 創(chuàng)建一套強(qiáng)大的圖片數(shù)據(jù)庫(kù)。

創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)10多年來(lái)致力于為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了成百上千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
之一步:確定數(shù)據(jù)庫(kù)需求
在開始創(chuàng)建數(shù)據(jù)庫(kù)前,首先需要確定數(shù)據(jù)庫(kù)的需求。圖片數(shù)據(jù)庫(kù)需要包含哪些信息?如何保存和管理這些信息?以下是圖片數(shù)據(jù)庫(kù)需要包含的信息:
1. 圖片名稱:圖片的名稱,用于識(shí)別圖片和提供給用戶查找使用。
2. 圖片分類:為了方便用戶查找和管理,每張圖片都需要進(jìn)行分類,例如文章插圖、產(chǎn)品圖片或者廣告圖片等。
3. 圖片描述: 圖片描述應(yīng)該提供圖片所呈現(xiàn)的信息,包含圖片的主題、角色和場(chǎng)景等,以及其他需要的數(shù)據(jù)。
4. 圖片尺寸:圖片文件的尺寸,包括圖片的寬度和高度,以及圖片的像素?cái)?shù)。
5. 圖片來(lái)源:圖片的來(lái)源,可以是用戶上傳、網(wǎng)站采集或者外部供應(yīng)商提供的。
6. 圖片格式:圖片文件的格式,包括 JPEG、PNG、GIF、SVG 等。
7. 圖片路徑:圖片文件所在的磁盤路徑。
8. 圖片上傳者:圖片的上傳者信息,包括上傳者的用戶名和上傳時(shí)間。
根據(jù)以上需求,我們可以開始設(shè)計(jì)數(shù)據(jù)庫(kù)。
第二步:設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)
在設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)前,需要先確定主鍵。因?yàn)閳D片庫(kù)中的每張圖片都具有獨(dú)一無(wú)二的鍵值,因此可以選擇使用圖片文件名稱作為主鍵。接下來(lái),我們可以設(shè)計(jì)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)。
圖片信息表(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;
接下來(lái),我們需要向表中插入一些圖片數(shù)據(jù)。
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’);
第三步:查詢圖片數(shù)據(jù)
在創(chuàng)建了數(shù)據(jù)庫(kù)后,我們需要可以根據(jù)需要查詢圖片數(shù)據(jù)。以下是一些常見(jiàn)的圖片查詢語(yǔ)句:
1. 查詢所有圖片信息:
SELECT * FROM picture_info;
2. 根據(jù)圖片名稱查詢圖片信息:
SELECT * FROM picture_info WHERE picture_name = ‘Nature01’;
3. 根據(jù)圖片分類查詢圖片信息:
SELECT * FROM picture_info WHERE picture_category = ‘Flower’;
4. 根據(jù)圖片上傳者查詢圖片信息:
SELECT * FROM picture_info WHERE picture_upload_by = ‘John’;
結(jié)語(yǔ)
以上是如何使用 MySQL 創(chuàng)建一個(gè)簡(jiǎn)單的圖片數(shù)據(jù)庫(kù)的介紹。當(dāng)然,一個(gè)完善的圖片數(shù)據(jù)庫(kù)需要更加詳細(xì)和精細(xì)的設(shè)計(jì)和實(shí)現(xiàn),例如圖片縮略圖、圖片關(guān)聯(lián)和訪問(wèn)控制等。但是,本文所介紹的基礎(chǔ)數(shù)據(jù)庫(kù)結(jié)構(gòu)可以作為起點(diǎn),幫助初學(xué)者快速了解 MySQL 的基本設(shè)計(jì)和實(shí)現(xiàn)方式。
相關(guān)問(wèn)題拓展閱讀:
- 圖像存入MySQL數(shù)據(jù)庫(kù)longBLOB出錯(cuò)
- 如何用ado將二進(jìn)制圖片數(shù)據(jù)存入mysql數(shù)據(jù)庫(kù)
圖像存入MySQL數(shù)據(jù)庫(kù)longBLOB出錯(cuò)
應(yīng)配察該是ms.Read(myphoto, 0, (Int32)ms.Length);
方慎此法出了問(wèn)題,寬賣迅也就是沒(méi)有真正把數(shù)據(jù)存入myphoto byte數(shù)組
問(wèn)題解決了,是字符集的問(wèn)扒笑尺題。我將數(shù)據(jù)庫(kù)及用到的表、字段字符集全部設(shè)置為 utf8 后升賀,向數(shù)據(jù)庫(kù)中存入圖像、word、excel 等非純文本格式的文件全部通過(guò),并且也沒(méi)遇到漢字亂春高碼的問(wèn)題。
如何用ado將二進(jìn)制圖片數(shù)據(jù)存入mysql數(shù)據(jù)庫(kù)
用ADO方式連的MYSQL, 已經(jīng)用AppendChunk圖片以二進(jìn)制插入數(shù)據(jù)庫(kù)中,下面是讀取的不分,寫入相反的方式
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;//數(shù)據(jù)長(zhǎng)度可以正確獲取
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 );
/*要判斷文件是否創(chuàng)世行灶建成功*/
LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)(pBuf));
outFile.WriteHuge(buffer,lDataLength);
GlobalUnlock((HGLOBAL)pBuf);
outFile.Close();
SafeArrayUnaccessData (varBLOB.parray);
}
pRs->Close();
}
用ADO方式連的MYSQL, 已經(jīng)用AppendChunk圖片以二進(jìn)制插入數(shù)據(jù)庫(kù)中,下面是讀取的不分,寫入相反的方式
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;//數(shù)據(jù)長(zhǎng)度可以正確獲取
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 );
/*要判斷文件是否創(chuàng)世行灶建成功*/
LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)(pBuf));
outFile.WriteHuge(buffer,lDataLength);
GlobalUnlock((HGLOBAL)pBuf);
outFile.Close();
SafeArrayUnaccessData (varBLOB.parray);
}
pRs->Close();
圖片數(shù)據(jù)庫(kù) mysql的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于圖片數(shù)據(jù)庫(kù) mysql,使用 MySQL 創(chuàng)建強(qiáng)大的圖片數(shù)據(jù)庫(kù),圖像存入MySQL數(shù)據(jù)庫(kù)longBLOB出錯(cuò),如何用ado將二進(jìn)制圖片數(shù)據(jù)存入mysql數(shù)據(jù)庫(kù)的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文名稱:使用MySQL創(chuàng)建強(qiáng)大的圖片數(shù)據(jù)庫(kù)(圖片數(shù)據(jù)庫(kù)mysql)
鏈接URL:http://www.5511xx.com/article/coepsjh.html


咨詢
建站咨詢
