How to Store and Retrieve Image on SQLite/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''Български''' [[How_to_Store_and_Retrieve_Image_on_SQLite|English]] [[How_to_Store_and_Retrieve_an_Image_or_File_with_SQLite_Spanish|Español]]<br />[[Category:HowTo]]<br />[[Category:snippets]]
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
 
'''Български''' [[How_to_Store_and_Retrieve_Image_on_SQLite|English]] [[How_to_Store_and_Retrieve_an_Image_or_File_with_SQLite_Spanish|Español]]
[[Category:HowTo]]
[[Category:snippets]]


= Как да съхраним и извлечем изображение или файл от SQLite =
= Как да съхраним и извлечем изображение или файл от SQLite =


Изображенията и файловете като цяло могат да се съхраняват в база данни. Ето един начин да направите това като изпълните следните стъпки:
Изображенията могат да бъдат съхранявани в бази от данни. Един от начините да се направи това е като се изпълнят следните стъпки:
 
1. Съдържанието на файла с изображението се прочита и записва в променлива от тип QByteArray
 
2. Променливата от тип QByteArray се записва като двоичен обект (Binary Large Object) в базата от данни
 
Пример:


1. Прочетете файла в QByteArray.<br />2. Съхранете QByteArray-я като бинарен обект(Binary Large Object) в базата данни.
<code>
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) return;
QByteArray byteArray = file.readAll();


За пример :
QSqlQuery query;
query.prepare("INSERT INTO imgtable (imgdata) VALUES (?)");
query.addBindValue(byteArray);
query.exec();
</code>


<code><br /> QFile file&amp;amp;#40;fileName&amp;amp;#41;;<br /> if (!file.open(QIODevice::ReadOnly)) return;<br /> QByteArray byteArray = file.readAll();
3. Изображението е вече налично в базата от данни и може да бъде извлечено чрез заявка от тип SELECT, както всеки друг тип данни:


QSqlQuery query;<br /> query.prepare(&quot;INSERT INTO imgtable (imgdata) VALUES (?)&quot;);<br /> query.addBindValue(byteArray);<br /> query.exec&amp;amp;#40;&amp;#41;;<br /></code>
<code>
QSqlQuery query("SELECT imgdata FROM imgtable");
query.next();
QByteArray array = query.value(0).toByteArray();
</code>


Сега изображението/файла може да се получи като всеки друг вид данни:<br /><code><br /> QSqlQuery query(&quot;SELECT imgdata FROM imgtable&amp;quot;);<br /> query.next();<br /> QByteArray array = query.value(0).toByteArray();<br /></code>
4.Създаване на QPixmap от QByteArray:


Създаване на QPixmap от QByteArray :<br /><code><br /> QPixmap pixmap = QPixmap();<br /> pixmap.loadFromData(array);<br /></code>
<code>
QPixmap pixmap = QPixmap();
pixmap.loadFromData(array);
</code>


И сме говоти! Сега пиксмапа може да се използва в бутон каот икона или в QLabel и т.н.
5. Променливата от тип Pixmap съдържа желаното изображение и може да бъде използвана за конкретните нужди на приложението, напр. като икона на бутон, изобразена чрез QLabel и т.н.

Latest revision as of 16:55, 17 August 2017

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Български English Español

Как да съхраним и извлечем изображение или файл от SQLite

Изображенията могат да бъдат съхранявани в бази от данни. Един от начините да се направи това е като се изпълнят следните стъпки:

1. Съдържанието на файла с изображението се прочита и записва в променлива от тип QByteArray

2. Променливата от тип QByteArray се записва като двоичен обект (Binary Large Object) в базата от данни

Пример:

 QFile file(fileName);
 if (!file.open(QIODevice::ReadOnly)) return;
 QByteArray byteArray = file.readAll();

QSqlQuery query;
 query.prepare("INSERT INTO imgtable (imgdata) VALUES (?)");
 query.addBindValue(byteArray);
 query.exec();

3. Изображението е вече налично в базата от данни и може да бъде извлечено чрез заявка от тип SELECT, както всеки друг тип данни:

 QSqlQuery query("SELECT imgdata FROM imgtable");
 query.next();
 QByteArray array = query.value(0).toByteArray();

4.Създаване на QPixmap от QByteArray:

 QPixmap pixmap = QPixmap();
 pixmap.loadFromData(array);

5. Променливата от тип Pixmap съдържа желаното изображение и може да бъде използвана за конкретните нужди на приложението, напр. като икона на бутон, изобразена чрез QLabel и т.н.