Форум программистов, компьютерный форум CyberForum.ru

Экспорт двухмерного массива в JPEG / BMP (график) - C++

Восстановить пароль Регистрация
 
ken_guru
0 / 0 / 0
Регистрация: 18.10.2011
Сообщений: 13
05.07.2013, 21:02     Экспорт двухмерного массива в JPEG / BMP (график) #1
Уважаемые форумчане,

Предисловие:
есть программа, которые делает определенные итерационные расчеты и на каждой итерации выдает пачку txt файлов - в каждом из который содержатся данные о величине той или иной физической величины в определенной точке пространства (проекции - т.е. двухмерный вид)

Что хочется получить в результате:
Чтобы кроме txt-файлов программа сохраняла уже построенные графики в любом графическом формате - JPEG / BMP и т.д.

Вопрос:
Как это реализовать? какие лучше всего использовать библиотеки, способы?
В программе также реализован вывод окна с контрольным графиком в конце просчета с помощью GLUTa - можно ли как-то glut использовать для этой цели?

Использую MVS 2008

Заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2013, 21:02     Экспорт двухмерного массива в JPEG / BMP (график)
Посмотрите здесь:

C++ вывод двухмерного массива
C++ Сортировка двухмерного массива
График в формате bmp C++
Сортировка двухмерного массива C++
C++ Перемешивание двухмерного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 01:37     Экспорт двухмерного массива в JPEG / BMP (график) #2
Думаю gdi / gdi+

http://www.rsdn.ru/article/gdi/gdiplus1.xml#E4GAC
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 15:46     Экспорт двухмерного массива в JPEG / BMP (график) #3
Цитата Сообщение от ken_guru Посмотреть сообщение
в любом графическом формате
http://freeimage.sourceforge.net/features.html
http://openil.sourceforge.net/
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 16:22     Экспорт двухмерного массива в JPEG / BMP (график) #4
А есть живой пример для Devil ? А то в доке непонятно как его использовать и для чего.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 16:24     Экспорт двухмерного массива в JPEG / BMP (график) #5
А в архиве с исходниками они разве "не живые" ?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 16:30     Экспорт двухмерного массива в JPEG / BMP (график) #6
Цитата Сообщение от lazybiz Посмотреть сообщение
А в архиве с исходниками они разве "не живые" ?
Ну к примеру как bmp задать попиксельно, переконвертить в jpeg и сохранить.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 16:48     Экспорт двухмерного массива в JPEG / BMP (график) #7
Я ни разу не пользовался этой библиотекой, но даже мне хватило 2 минуты чтобы понять что этим занимаются функции ilCopyPixels и ilSetPixels. Сохранением занимаются функции ilSave и ilSaveImage.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 16:53     Экспорт двухмерного массива в JPEG / BMP (график) #8
Цитата Сообщение от lazybiz Посмотреть сообщение
Я ни разу не пользовался этой библиотекой,
Ну я тоже... поэтому предположил раз предлагаете может есть какие-то наработки кода...

Цитата Сообщение от lazybiz Посмотреть сообщение
но даже мне хватило 2 минуты чтобы понять что этим занимаются функции ilCopyPixels и ilSetPixels. Сохранением занимаются функции ilSave и ilSaveImage.
Это я тоже нашел

Главное - конвертация между форматами ?
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 16:56     Экспорт двухмерного массива в JPEG / BMP (график) #9
Цитата Сообщение от Avazart Посмотреть сообщение
может есть какие-то наработки кода...
Наработок нет, то что предложил просто нашел по первым запросам google.
Честно говоря, библиотека очень проста, интерфейс взаимодействия подобен OpenGL, т.ч. разобраться там не сложно. В этом архиве: http://prdownloads.sourceforge.net/o...s.zip?download удобная оффлайн документация если тебе это интересно.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 17:00     Экспорт двухмерного массива в JPEG / BMP (график) #10
Да там бы как бы pdf была, а куча html-лек всегда неудобно
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 17:10     Экспорт двухмерного массива в JPEG / BMP (график) #11
Цитата Сообщение от Avazart Посмотреть сообщение
а куча html-лек всегда неудобно
Ну не скажи, по ссылкам прыгать я считаю более удобно чем листать бесконечные страницы..
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
06.07.2013, 17:12     Экспорт двухмерного массива в JPEG / BMP (график) #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<IL/il.h>
#include<stdlib.h> /* because of malloc() etc. */
int main(int argc, const char * argv[])
{
ILuint handle, w, h;
/* First we initialize the library. */
/*Do not forget that... */
ilInit();
/* We want all images to be loaded in a consistent manner */
ilEnable(IL_ORIGIN_SET);
/* In the next section, we load one image */
ilGenImages(1, & handle);
ilBindImage(handle);
ILboolean loaded = ilLoadImage("original_file.jpg");
if (loaded == IL_FALSE)
return -1; /* error encountered during loading */
/* Let’s spy on it a little bit */
w = ilGetInteger(IL_IMAGE_WIDTH); // getting image width
h = ilGetInteger(IL_IMAGE_HEIGHT); // and height
printf("Our image resolution: %dx%d\n", w, h);
/* how much memory will we need? */
int memory_needed = w * h * 3 * sizeof(unsigned char);
/* We multiply by 3 here because we want 3 components per pixel */
ILubyte * data = (ILubyte *)malloc(memory_needed);
/* finally get the image data */
ilCopyPixels(0, 0, 0, w, h, 1, IL_RGB, IL_UNSIGNED_BYTE, data);
/* We want to do something with the image, right? */
int i;
for(i = 0; i < memory_needed; i++)
if(i % 31 == 0) /* vandalise the image */
data[i] = i % 255;
/* And maybe we want to save that all... */
ilSetPixels(0, 0, 0, w, h, 1, IL_RGB, IL_UNSIGNED_BYTE, data);
/* and dump them to the disc... */
ilSaveImage("our_result.png");
/* Finally, clean the mess! */
ilDeleteImages(1, & handle);
free(data); data = NULL;
return 0;
}

Грузят jpg, делают преобразования что-то с пикселями и сохраняют в png.
Как я понимаю jpg преобразовывается в bmp иначе как можно обратиться к пикселям ?

Добавлено через 56 секунд
Цитата Сообщение от lazybiz Посмотреть сообщение
Ну не скажи, по ссылкам прыгать я считаю более удобно чем листать бесконечные страницы..
Зато есть поиск ...
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
06.07.2013, 17:21     Экспорт двухмерного массива в JPEG / BMP (график) #13
Для того чтобы вывести изображение на экран или сохранить его в другом формате для начала его декодируют, результат декодировки - одно- или двумерный массив и некоторая информация о изображении. Это базовые поняти, без которых нельзя работать с изображениями.
Цитата Сообщение от Avazart Посмотреть сообщение
Зато есть поиск ...
Зачем нужен поиск если есть все функции на одной странице, тем более когда не знаешь что искать... Спор тут неуместен, просто я считаю что со мной согласиться большинство опытных людей.

P.S.: BMP - это формат изображения, данные обычно хранятся в нем "как есть", т.е. не в кодированном виде, поэтому правильней сказать что сначала JPEG преобразовывается в именно массив со структурой информации, а далее в кодируется в другой формат.
ken_guru
0 / 0 / 0
Регистрация: 18.10.2011
Сообщений: 13
07.07.2013, 08:17  [ТС]     Экспорт двухмерного массива в JPEG / BMP (график) #14
Всем спасибо за ответы!

Однако в предложенных вариантах несколько запутался, потому как про них хочется сказать "это все равно, что стрелять из пушки по воробьям"

да и к сожалению большинство примеров разобраны для случаев - загрузили картинку, похимичили, вывели на экран/сохранили. А не для случая - нарисовали картинку попиксельно, ну или что-то в этом роде

в итоге остановился на библиотеке СIMG (http://cimg.sourceforge.net/)

в ней необходимая задача делается в 10 строк без сложной предварительной инициализации

хотя конечно и без минусов не обошлось - нативно поддерживает только BMP - один прогон программы сжирает до 200 MB из-за кучи графиков на выходе.
Но вроде как можно подкрутить либо libgpeg, либо ImageMagick - но пока не успел с ними разобраться...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 11:57     Экспорт двухмерного массива в JPEG / BMP (график)
Еще ссылки по теме:

Сортировка двухмерного массива по i и j C++
Удаление двухмерного массива C++
C++ Из двухмерного массива в одномерный

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,560
Записей в блоге: 17
07.07.2013, 11:57     Экспорт двухмерного массива в JPEG / BMP (график) #15
При использовании gdi/gdi+ ничего прикручивать не пришлось бы

Добавлено через 3 минуты
Цитата Сообщение от ken_guru Посмотреть сообщение
нарисовали картинку попиксельно, ну или что-то в этом роде
Я думал тебе нужно сделать скриншот уже построенных графиков в окне и сохранить.
Yandex
Объявления
07.07.2013, 11:57     Экспорт двухмерного массива в JPEG / BMP (график)
Ответ Создать тему
Опции темы

Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru