Получить размер изображения из столбца Blob в базе данных MySQLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Получить размер изображения из столбца Blob в базе данных MySQL

Сообщение Anonymous »

Я хочу прочитать изображение из базы данных, столбец изображения - это тип mysql_type_blob , и я читаю столбец, используя этот код. В настоящее время изображение Blob преобразуется как char * массив

Код: Выделить всё

//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);
}
note :
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»