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

C++

Войти
Регистрация
Восстановить пароль
 
 
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
#1

Структура jpeg файла - C++

30.05.2016, 08:41. Просмотров 1544. Ответов 28
Метки нет (Все метки)

не знаю в какой раздел это писать... посему прошу прощения за неточность.. растолкуйте пожалуйста кто врубится в тему как строится zigzag order графический формат JPEG.. я так понимаю каждая ячейка должна маркироваться по горизонтали и вертикали то есть иметь свои координаты но как это реализуется технически я не догоняю простите.
0
Миниатюры
Структура jpeg файла  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2016, 08:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура jpeg файла (C++):

Структура ехе файла - C++
Где можно подробно прочитать про структуру ехе? мне например надо данные о файле получить, ресурсы, классы, указатели на экспортируемые...

Массив пикселей RGB в JPEG - C++
Всем доброго времени суток! Пишу программу под МК на С/С++. На входе имею массив пикселей в формате RGB565 (2 байта/пиксель). На...

Срочно нужен код для алгоритма JPEG - C++
Помогите, кто может! Нужна программа на С/С++, которая BMP файл преобразует в JPEG. JPEG алгоритм надо закодировать, опция "сохранить как"...

Как считать дату из EXIF jpeg файла? - C++ Builder
Как считать дату из EXIF jpeg файла?

"Jpeg Error #53" при загрузке файла .png (XE7) - C++ Builder
String Resp = IdHTTP1->Get(URL); String StreamImage; i = Resp.Pos("property='og:image'"); if (i != 0) { i = Pos("content='",...

Структура файла - C++ Builder
В c++ я новичок,слышал,чтобы сделать редактор какого либо файла нужно знать его структуру,хотелось бы знать,что такое структура и как её...

28
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.05.2016, 09:07 #2
KotovichMX, минут через 40 скину что есть
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.05.2016, 09:56 #3
вот доки по тематике которые в свое время я почему-то пометил как лучшие (см. вложения).
технически зигзаг делается так
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//------------------------------------------------------------------------------
/*
матрица индексов прямой зигзагообразной перестановки
размер матрицы - 8x8
*/
//------------------------------------------------------------------------------
static const unsigned zzi[64] =
{
015614, 15, 27, 28,
24713, 16, 26, 29, 42,
3812, 17, 25, 30, 41, 43,
911, 18, 24, 31, 40, 44, 53,
10, 19, 23, 32, 39, 45, 52, 54,
20, 22, 33, 38, 46, 51, 55, 60,
21, 34, 37, 47, 50, 56, 59, 61,
35, 36, 48, 49, 57, 58, 62, 63
};
//------------------------------------------------------------------------------
/*
прямая и обратная зигзагообразная перестановка
размеры:
    in, out - матрица 8x8
*/
//------------------------------------------------------------------------------
void fzzt(const int *in, int *out)
{
    /*
    for (unsigned y = 0; y < 8; y++)
        for (unsigned x = 0; x < 8; x++)
            out[item(zzi, y, x, 8)] = item(in, y, x, 8);
    */
 
    const int *p_in = in;
 
    for
    (
        const unsigned
            *p_zzi = zzi,
            *p_zzi_end = zzi + 63;
        p_zzi <= p_zzi_end;
    )
        out[*p_zzi++] = *p_in++;
}
//------------------------------------------------------------------------------
void izzt(const int *in, int *out)
{
    /*
    for (unsigned y = 0; y < 8; y++)
        for (unsigned x = 0; x < 8; x++)
            item(out, y, x, 8) = in[item(zzi, y, x, 8)];
    */
 
    int *p_out = out;
 
    for
    (
        const unsigned
            *p_zzi = zzi,
            *p_zzi_end = zzi + 63;
        p_zzi <= p_zzi_end;
    )
        *p_out++ = in[*p_zzi++];
}
//------------------------------------------------------------------------------
/*
доступ к эл-ту вектора как к эл-ту матрицы
    i - y
    j - x
*/
//------------------------------------------------------------------------------
template <class type>
type &item
(
    type * const base,
    const unsigned i, const unsigned j,
    const unsigned width
)
{
    return *(base + i * width + j);
}
1
Вложения
Тип файла: zip jpeg-rus.zip (25.8 Кб, 16 просмотров)
Тип файла: zip jpeg_c.zip (76.2 Кб, 10 просмотров)
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
30.05.2016, 10:33  [ТС] #4
тоесть с помощью с++ происходит обработка пакуется в контейнер и с входящей стороны с помощью опять таки с++ распаковывается и подается на моник?
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.05.2016, 10:40 #5
KotovichMX, при чем тут C++? правильнее будет сказать так: некое приложение написанное на неком языке получив некий файл формата JPEG в состоянии прочитать его и построить соответствующий этому файлу растр который может быть неким образом обработан в том числе и выведен на экран ПК
0
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
30.05.2016, 10:48  [ТС] #6
ага и для того что бы прочитать или передать должен присутствовать скрипт типа приведенного выше..

Добавлено через 3 минуты
чесно скажу меня больше интересует не алгоритм а аппаратная часть цитирую - ''обработан в том числе и выведен на экран ПК'' . читал про драйвера матриц мониторов но.. как-то так .. далеко не все дошло
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.05.2016, 10:55 #7
Цитата Сообщение от KotovichMX Посмотреть сообщение
ага и для того что бы прочитать или передать должен присутствовать скрипт типа приведенного выше..
ну да. почти. для того что бы сделать из файла JPEG растр мне пришлось написать 275 000 байт кода на C++ из 9 000 строк. причем зигзаг по своей сложности даже рядом не стоит с тем что там дальше происходит.
Цитата Сообщение от KotovichMX Посмотреть сообщение
аппаратная часть
тут я ничего не понял. я просто выводил растр средствами среды разработки. помещал на форму компонент картинка. в эту картинку записывал полученный растр. как потом это все дело обрабатывает библиотека среды разработки + операционная система + драйвера + аппаратная часть меня как и 1 млн + 1 разработчиков вообще не интересует. если бы я писал драйвер монитора меня наверное это бы интересовало. но к JPEG это не имеет никакого отношения.
0
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
30.05.2016, 17:31  [ТС] #8
у меня страшок что -то упустить.. поэтому пытаюсь просечь все от и до.. хотя ты прав лезть во все дебри сразу это получить кашу в голове. достаточно для начала изучить алгоритм.

Добавлено через 20 секунд
спасибо.

Добавлено через 5 часов 54 минуты
Цитата Сообщение от vxg Посмотреть сообщение
для того что бы сделать из файла JPEG растр мне пришлось написать 275 000 байт кода на C++ из 9 000 строк
вот это как раз то что низзя упустить. можно поподробней?
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.05.2016, 17:48 #9
KotovichMX, давно делал программу для восстановления повреждённых фото - диск с моря неудачно записался, решил разобраться с форматом что бы самому восстановить так как не нашёл программ которые могли бы работать на уровне кодовых единиц формата. Программу можно глянуть здесь http://alphacity.netii.net/tree/prjs-graph.htm (называется jpeg recovery).

Добавлено через 1 минуту
Она вроде должна и часть информации о формате показывать если я правильно помню
0
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
31.05.2016, 04:03  [ТС] #10
ok! спс

Добавлено через 5 минут
удивительно как с поврежденного диска удалось достать что-то. я юзал кучу прог по восстановлению как графики так и видео и бесполезно. ниразу не удалось чего-либо извлечь.

Добавлено через 9 часов 42 минуты
Цитата Сообщение от vxg Посмотреть сообщение
static const unsigned zzi[64] =
{
0,* 1,* 5,* 6,* 14, 15, 27, 28,
2,* 4,* 7,* 13, 16, 26, 29, 42,
3,* 8,* 12, 17, 25, 30, 41, 43,
9,* 11, 18, 24, 31, 40, 44, 53,
10, 19, 23, 32, 39, 45, 52, 54,
20, 22, 33, 38, 46, 51, 55, 60,
21, 34, 37, 47, 50, 56, 59, 61,
35, 36, 48, 49, 57, 58, 62, 63
};
на первый взгляд всё очень просто - крути зигзаг как хочешь а если усложнить задачу и привязать к каждой ячейке время ее вывода. с таким сталкивался?
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
31.05.2016, 06:33 #11
KotovichMX, а если добавить массу? А если добавить длину волос и баланс банковского счёта? Зачем?
1
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
31.05.2016, 14:31  [ТС] #12
я вообщето серьезно. как запустить матрицу в глубокую обработку в режиме типа таймлайн? получится или нет? впрочем сам попробую.
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
31.05.2016, 14:48 #13
Цитата Сообщение от KotovichMX Посмотреть сообщение
как запустить матрицу в глубокую обработку в режиме типа таймлайн?
термины глубокую и тимлайн в данном контексте мне непонятны
0
KotovichMX
-32 / 2 / 0
Регистрация: 19.07.2011
Сообщений: 592
31.05.2016, 15:25  [ТС] #14
да похоже не совсем правильно выразился. попробую в более приближенном к научному стиле: "Если в единичной матрице изменить порядок расположения строк, то полученная матрица называется матрицей перестановок"... если подставлять заменяя отдельные строки(у нас 8на8=64 сектора) получаем подстановочную все эти процессы происходят с определенной скоростью или правильно сказать заданой частотой и как вот эту частоту регулируют?

Добавлено через 2 минуты
если посмотреть на твой скрипт выше там нигде нет функций определения каких то временных интервалов. тогда как они задаются?
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
31.05.2016, 15:33 #15
KotovichMX, лично мне применительно к формату JPEG абсолютно не понятно о каких временных интервалах идет речь (у нас графический файл уже время хранить стал??) и зачем нам переставлять строки в матрице (у нас есть конкретный блок пикселей и переставляя в нем строки мы превратим его в фарш)
0
31.05.2016, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2016, 15:33
Привет! Вот еще темы с ответами:

Структура BMP файла - C++ Builder
Доброго времени. Есть задача считать заголовок bmp файла, вывести его некоторые данные на экран и преобразовать само изображение. С...

Структура и чтение файла - C++ Builder
Имеется структура. Пытаюсь используя её, считать данные. Но не выходит. Что не так? struct vopros { char *nomer; char...

JPEG->MemoryStream = 120тиков а JPEG->Image1 и Image1->MemoryStream = 30тиков? - C++ Builder
Добрый вечер. Впринципе название темы все объясняет. Ради любопытства думал что может по умолчанию размер JPEGa не задан и он кроме рисунка...

В конец jpeg-файла записывается весь html, что идёт после выдачи файла - PHP
Народ, всё до банальности просто. Выджаю файл через пхп на загрузку пользователю if(file_exists(&quot;file/&quot;.$fpath)){ ...


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

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

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