Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zasadadada
8 / 9 / 1
Регистрация: 03.05.2013
Сообщений: 533
#1

Gimp2 картинка в c++ code имеет ограничение на размер - C++

16.05.2015, 13:40. Просмотров 224. Ответов 2
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* GIMP RGBA C-Source image dump (cog.c) */
 
static const struct {
  unsigned int   width;
  unsigned int   height;
  unsigned int   bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ 
  unsigned char  pixel_data[515 * 503 * 4 + 1];
} gimp_image = {
  515, 503, 4,
  "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
  "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
  "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
  "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
  "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
  "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
  "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
  "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
  "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
  "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
  "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
.....
Пытаюсь затолкать большую картинку вот в такой формат, строка может быть только
65535 bytes in length Вопрос, как затолкать больше? Что бы потом считать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2015, 13:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Gimp2 картинка в c++ code имеет ограничение на размер (C++):

Фирма имеет 10 магазинов. C++ (Code::Blocks) - C++
Фирма имеет 10 магазинов . Информация о доходе каждого магазина за каждый месяц года храниться в двумерном массиве (первого магазина в...

Размер консоли в Code::Blocks - C++
Не знаю что за прикол, но когда компилирую программу то окно консоли которое выскакивает нереально маленькое, причем размер его изменить...

как снять ограничение на размер статического массива - C++
Мне нужно выполнить программу и чтобы ее выполнение превышало 0,2 секунды,но я не могу этого сделать,т.к. если я делаю двумерные массивы...

Как узнать размер объектов cin и cout в среде Code::Blocks - C++
Всем привет!Уважаемые, не подскажите как узнать размер объектов cin и cout в среде Code::Blocks.С уважением!

Почему результат компиляции маленькой программы на с++ имеет довольно большой размер? - C++
Почему 20 строчек программа после компиляции exe файл занимает пол метра 512 кб?) так много

Можно ли обойти ограничение на максимальный размер массива ? error C2148: total size of array must not exceed 0x7fffffff bytes - C++
Ну собственно Visual Studio 2012, платформа x64, при попытке создать массив из 10-и миллиардов элементов unsigned *test = new unsigned; ...

2
MrGluck
Модератор
Эксперт CЭксперт С++
7801 / 4845 / 754
Регистрация: 29.11.2010
Сообщений: 13,212
16.05.2015, 14:01 #2
Выделить массив динамически.
0
zasadadada
8 / 9 / 1
Регистрация: 03.05.2013
Сообщений: 533
16.05.2015, 14:44  [ТС] #3
Поясните, не понял. Там ограничения на тип записи вроде как...
C++
1
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" .....
Вообще там в программе как я понял, есть специальная опция для такого случая, он кодирует, и предосталвяем декодер, вот только не могу понять как им пользоваться.

[
Кликните здесь для просмотра всего текста
CPP]
/* GIMP RGBA C-Source image dump 1-byte-run-length-encoded (cog.c) */

#define GIMP_IMAGE_RUN_LENGTH_DECODE(image_buf, rle_data, size, bpp) do \
{ unsigned int __bpp; unsigned char *__ip; const unsigned char *__il, *__rd; \
__bpp = (bpp); __ip = (image_buf); __il = __ip + (size) * __bpp; \
__rd = (rle_data); if (__bpp > 3) { /* RGBA */ \
while (__ip < __il) { unsigned int __l = *(__rd++); \
if (__l & 128) { __l = __l - 128; \
do { memcpy (__ip, __rd, 4); __ip += 4; } while (--__l); __rd += 4; \
} else { __l *= 4; memcpy (__ip, __rd, __l); \
__ip += __l; __rd += __l; } } \
} else { /* RGB */ \
while (__ip < __il) { unsigned int __l = *(__rd++); \
if (__l & 128) { __l = __l - 128; \
do { memcpy (__ip, __rd, 3); __ip += 3; } while (--__l); __rd += 3; \
} else { __l *= 3; memcpy (__ip, __rd, __l); \
__ip += __l; __rd += __l; } } \
} } while (0)
static const struct {
unsigned int width;
unsigned int height;
unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */
unsigned char rle_pixel_data[25093 + 1];
} gimp_image = {
515, 503, 4,
"\377\377\377\377\0\340\377\377\377\0\1A\252T\260\300A\252T\300\1A\252T\260"
"\377\377\377\377\0\377\377\377\377\0\377\377\377\377\0\303\377\377\377\0"
"\1A\252T0\302A\252T\377\1A\252T0\377\377\377\377\0\377\377\377\377\0\377"
"\377\377\377\0\302\377\377\377\0\1A\252T\220\302A\252T\377\1A\252T\220\377"
"\377\377\377\0\377\377\377\377\0\377\377\377\377\0\302\377\377\377\0\1A\252"
"T\340\302A\252T\377\1A\252T\340\377\377\377\377\0\377\377\377\377\0\377\377"
"\377\377\0\301\377\377\377\0\1A\252T0\304A\252T\377\1A\252T0\377\377\377"
"\377\0\377\377\377\377\0\377\377\377\377\0\300\377\377\377\0\1A\252T\220"
"\304A\252T\377\1A\252T\220\377\377\377\377\0\377\377\377\377\0\377\377\377"
"\377\0\300\377\377\377\0\1A\252T\340\304A\252T\377\1A\252T\340\377\377\377"
[/CPP]


C++
1
#define GIMP_IMAGE_RUN_LENGTH_DECODE(image_buf, rle_data, size, bpp) do \
Тут вроде как нужно вставить буфер куда будет складывать, далее исчточник, размер, шаг.
C++
1
2
    unsigned char* asd = new unsigned char[1000000]{};
    GIMP_IMAGE_RUN_LENGTH_DECODE(asd, gimp_image.rle_pixel_data, 25093 + 1, 4);
Не работает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2015, 14:44
Привет! Вот еще темы с ответами:

'Какой размер имеет переменная типа int в 32 битной и в 64 битной OC? - C++
Объектно-ориентированное программирование в С++ Р. Лафоре.

Картинка, сохраненная через SaveFileDialog имеет размер 0 байт - C#
Мучаюсь 2 часа, использовал код с msdn, всё равно ошибку выдает. System.NullReferenceException: Ссылка на объект не указывает на экземпляр...

Нужно, чтобы картинка на сайте растягивалась под размер экрана, как это сделать ? (Пропорционально, картинка высокого расширения и качества) - HTML, CSS
binding text

Размер консоли в Code::Blocks в Ubuntu - Кроссплатформенная разработка
В общем, поставил на mac VirtualBox, установил Ubuntu 14.04.3, поставил Code::Blocks. Теперь при запуске проекта вылазит консоль с...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru