Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
1

Структура jpeg файла

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

не знаю в какой раздел это писать... посему прошу прощения за неточность.. растолкуйте пожалуйста кто врубится в тему как строится zigzag order графический формат JPEG.. я так понимаю каждая ячейка должна маркироваться по горизонтали и вертикали то есть иметь свои координаты но как это реализуется технически я не догоняю простите.
0
Миниатюры
Структура jpeg файла  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2016, 08:41
Ответы с готовыми решениями:

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

Чтение и сохранение JPEG файла
Как прочитать файл формата .jpg, а потом обработанное(уже мной!) сохранить???

Открытие и побитовое чтение jpeg-файла
Здравствуйте уважаемые участники форума. Прошу подсказать, как лучше справиться с задачей....

Редактирование/создание EXIF заголовка jpeg файла
Очень нужны исходники программы позволяющей редактировать и создавать EXIF заголовки у jpeg файлов...

28
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
30.05.2016, 09:07 2
KotovichMX, минут через 40 скину что есть
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
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 Кб, 27 просмотров)
Тип файла: zip jpeg_c.zip (76.2 Кб, 18 просмотров)
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
30.05.2016, 10:33  [ТС] 4
тоесть с помощью с++ происходит обработка пакуется в контейнер и с входящей стороны с помощью опять таки с++ распаковывается и подается на моник?
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
30.05.2016, 10:40 5
KotovichMX, при чем тут C++? правильнее будет сказать так: некое приложение написанное на неком языке получив некий файл формата JPEG в состоянии прочитать его и построить соответствующий этому файлу растр который может быть неким образом обработан в том числе и выведен на экран ПК
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
30.05.2016, 10:48  [ТС] 6
ага и для того что бы прочитать или передать должен присутствовать скрипт типа приведенного выше..

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

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

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

Добавлено через 1 минуту
Она вроде должна и часть информации о формате показывать если я правильно помню
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
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
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
31.05.2016, 06:33 11
KotovichMX, а если добавить массу? А если добавить длину волос и баланс банковского счёта? Зачем?
1
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.05.2016, 14:31  [ТС] 12
я вообщето серьезно. как запустить матрицу в глубокую обработку в режиме типа таймлайн? получится или нет? впрочем сам попробую.
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
31.05.2016, 14:48 13
Цитата Сообщение от KotovichMX Посмотреть сообщение
как запустить матрицу в глубокую обработку в режиме типа таймлайн?
термины глубокую и тимлайн в данном контексте мне непонятны
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.05.2016, 15:25  [ТС] 14
да похоже не совсем правильно выразился. попробую в более приближенном к научному стиле: "Если в единичной матрице изменить порядок расположения строк, то полученная матрица называется матрицей перестановок"... если подставлять заменяя отдельные строки(у нас 8на8=64 сектора) получаем подстановочную все эти процессы происходят с определенной скоростью или правильно сказать заданой частотой и как вот эту частоту регулируют?

Добавлено через 2 минуты
если посмотреть на твой скрипт выше там нигде нет функций определения каких то временных интервалов. тогда как они задаются?
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
31.05.2016, 15:33 15
KotovichMX, лично мне применительно к формату JPEG абсолютно не понятно о каких временных интервалах идет речь (у нас графический файл уже время хранить стал??) и зачем нам переставлять строки в матрице (у нас есть конкретный блок пикселей и переставляя в нем строки мы превратим его в фарш)
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.05.2016, 15:50  [ТС] 16
н-да действительно. это если анимация типа gif... тогда как посчитать время затрачиваемое на выполнение зигзага при конвертации скажем из одного формата в другой?

Добавлено через 1 минуту
простите в JPEG.
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
31.05.2016, 15:55 17
KotovichMX, время работы ЛЮБОЙ функции можно посчитать если сделать так
C++
1
2
3
DWORD t = GetTickCount();
наш код
DWORD dt = GetTickCount() - t;
Добавлено через 1 минуту
и это время будет ничтожно малым если сравнивать его со временем выполнения DCT или декодированием по Хаффману
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.05.2016, 15:55  [ТС] 18
ok! спасибо большое.
0
Модератор
3318 / 2105 / 337
Регистрация: 13.01.2012
Сообщений: 8,177
31.05.2016, 15:56 19
что вы вообще на этом зигзаге застряли)?
0
-27 / 7 / 1
Регистрация: 19.07.2011
Сообщений: 627
31.05.2016, 15:59  [ТС] 20
боюсь что-то упустить. что бы после в бою как говорится не поплыть.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2016, 15:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В конец jpeg-файла записывается весь html, что идёт после выдачи файла
Народ, всё до банальности просто. Выджаю файл через пхп на загрузку пользователю...

Отловить GET .jpeg - файла
Например: var/site/images/1.jpg var/site/images/2.jpg var/site/images/3.jpg var/site/index.php...

Resize JPEG, BMP, GIF, PNG --> JPEG
Доброго дня! Стала задача сделать ресайзер. Требования: картинка по соотношению вес/качество...

Что за цифры внутри jpeg-файла?
Доброго времени суток....тренировался читать файлы, jpeg..... file =...


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

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

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