Код: Выделить всё
//Get the total number of fields
int fieldCount = mysql_num_fields(result);
//Get field information of a row of data
MYSQL_FIELD *fields = mysql_fetch_fields(result);
while (m_row = mysql_fetch_row(result))
{
for (int i = 0;i < fieldCount; ++i)
{
if (fields[i].type == MYSQL_TYPE_BLOB)
{
unsigned long length = mysql_fetch_lengths(result)[i];
char* buffer = new char[length + 1];
memset(buffer, 0x00, sizeof(buffer));
memcpy(buffer, m_row[i], length);
}
}
}
Другой способ считывать данные из базы данных MySQL: < /p>
Код: Выделить всё
res = stmt->executeQuery("MY QUERY TO DATABASE");
while (res->next())
{
std::istream *blobData = res->getBlob("image");
std::istreambuf_iterator isb = std::istreambuf_iterator(*blobData);
std::string blobString = std::string(isb, std::istreambuf_iterator());
tempFR.image = blobString;
blobData->seekg(0, ios::end);
tempFR.imageSize = blobData->tellg();
std::istream *blobIn;
char buffer[tempFR.imageSize];
memset(buffer, '\0', tempFR.imageSize);
blobIn = res->getBlob("image");
blobIn->read((char*)buffer, tempFR.imageSize);
}
ImageSize и длина являются Общий размер изображения, например, 1000 .
Обновление № 1: Как изображение будет реконструировать тем временем написание на диск?
В первом случае можно написать Blob_image на диск через эти коды: < /p>
stringstream pic_name;
pic_name
и во втором: < /p>
std::ofstream outfile ("car.jpeg",std::ofstream::binary);
outfile.write (buffer, tempFR.imageSize);
outfile.close();
< /code>
В обоих случаях изображение записи на диск правильно. Но я хочу найти измерение изображения без написания на диск и чтение это снова?
Подробнее здесь: https://stackoverflow.com/questions/733 ... l-database
Мобильная версия