Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BMP to Jpeg, преобразование 
V
    Опции темы
ecspertiza
Дата 23.12.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Вот вопрос как перевести средствами QT BMP в Jpeg? Просто требуется хранить картинки в БД, а в BMP они слишком много весят.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
SABROG
Дата 23.12.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



QPixmap::loadFromData(const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor)
QPixmap::save (QIODevice * device, const char * format = 0, int quality = -1 ) const 

Первый вариант для загрузки из BLOB'a. Второй для сохранения уже загруженного BMP изображения в выбранном формате в QBuffer.

Код

         QPixmap pixmap;
         QByteArray bytes;
         QBuffer buffer(&bytes);
         buffer.open(QIODevice::WriteOnly);
         pixmap.save(&buffer, "PNG");


Потом этот QByteArray передается в SQL запрос через bind для BLOB поля.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 23.12.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Тогда ещё вопрос как проверить разрешение картинки, есть вариант считать её имя, и проверить 3 последних символа, но насколько я знаю формат задаётся не 3 последними буквами а первыми байтами файла, или может символов хватит?




--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
SABROG
Дата 23.12.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Ты хочешь проверить разрешение до выгрузки картинки из базы ? А так QPixmap::height(), QPixmap::width()


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 23.12.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Ну ето я неправильно описал, я хочу сделать проверку, при добавлении картинки в базу, если картинка не jpeg то преобразуем её в jpeg и добавляем в базу, под разрешением я имел ввиду последние три символа в имени файла, вот я думаю как проверять формат файла тоесть какой он BMP или JPEG. Есть вариант считать её имя, и проверить 3 последних символа, но я вот думаю насколько это эффективно.



--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Alexeis
Дата 23.12.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 1
Всего: 459



ecspertiza, все популярные графические форматы имеют сигнатуры, в начале файла. Последовательность байтов определяющая формат. Проверять ее надежнее чем расширение файла, при этом не важен источник данных то ли это реальный файл, то ли просто буфер байтов из неизвестного источника.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
NewDima
Дата 23.12.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: нет
Всего: 12



это еще при условии, что мы не уверены что данному расширению файла действительно соответствует данный формат изображения. А если уверены и время является критическим ресурсом, то пойдет и по расширению, тем более, если файлов очень много
PM ICQ   Вверх
SABROG
Дата 23.12.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(ecspertiza @ 23.12.2008,  12:14)
Ну ето я неправильно описал, я хочу сделать проверку, при добавлении картинки в базу, если картинка не jpeg то преобразуем её в jpeg и добавляем в базу, под разрешением я имел ввиду последние три символа в имени файла, вот я думаю как проверять формат файла тоесть какой он BMP или JPEG. Есть вариант считать её имя, и проверить 3 последних символа, но я вот думаю насколько это эффективно.

Если тебе удалось загрузить картинку через QPixmap, то она уже не имеет формата, это просто картинка.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.