Как реализовать просмотрщик изображений или PDF?
В целях обучения я хотел бы знать, как реализовать программу просмотра изображений (и / или) PDF самостоятельно.
Меня интересует общий подход к реализации такой вещи.
Я уже читал о различных форматах в сети (tiff / pdf), поэтому я обнаружил, что эти файлы имеют специальный формат, который описывает, где я должен искать заголовок, где находится нижний колонтитул и где информация об изображении (в расшифрованном виде)) является.
Потому что я думаю, что такой зритель работает. лайк:
- открытие файла
- чтение различной информации о файле (заголовок, нижний колонтитул и т. д.)
- "перевести" позиции пикселей
Мне нужно знать, как получить позиции пикселей (в случае файла TIFF).
Как создать это как элемент управления? Куда я должен поместить пиксели?
Не стесняйтесь поправлять меня, если я ошибаюсь, потому что банкомат у меня действительно нет идеи, и все это просто предположение.
С Уважением,
Inno
PS: Я бы предпочел решение на C#, но если оно на другом языке, это тоже нормально. Платформа должна быть Microsoft Windows (прежде всего).
PPS: он должен работать без уже установленного pdf-/ display-приложения.
2 ответа
Для любого зрителя, подобного этому, вам нужно будет найти спецификации для каждого типа файла, который вы хотите отобразить, и выяснить, как закодированы его данные. Некоторые форматы изображений основаны на других или используют похожие методы кодирования, в то время как другие полностью отличаются друг от друга. PDF еще один зверь. Я немного поработал над этим, и, насколько я помню (я могу ошибаться, это было давно), он в основном представляет собой серию объектов, каждый из которых имеет уникальное положение, размер и различные атрибуты, зависящие от типа объекта.,
Я бы взглянул на Википедию. На самом деле в нем есть несколько действительно хороших статей о различных форматах изображений.
http://en.wikipedia.org/wiki/JPEG
И это определенно укажет вам официальные документы по стандартам для каждого формата, который вы хотите охватить.
В конечном итоге вам, вероятно, придется читать / реализовывать rfc для каждого формата:
JPEG - http://tools.ietf.org/html/rfc1341
PNG - http://www.faqs.org/rfcs/rfc2083.html
GIF - http://www.w3.org/Graphics/GIF/spec-gif89a.txt
BMP - http://www.faqs.org/rfcs/rfc797.html
НТН
Вот способ для преобразования вашего изображения в байтовый массив.
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
Как создать это как элемент управления? Куда я должен поместить пиксели? Этот байтовый массив содержит данные о пикселях вашего изображения.(Посмотрите, какой у вас тип изображения: 8-битный или 16-битный). Теперь вы можете нарисовать ваши изображения на любой панели и сделать их пользовательским элементом управления.
Я не знаю о формате PDF.