2010-08-03 34 views
0

为了学习的目的我想知道如何自己实现一个图像(和/或)pdf查看器。如何实现图像或PDF查看器?

我对执行这样的事情的一般方法感兴趣。

我已经阅读了关于网上不同格式(tiff/pdf)的内容,所以我发现这些文件有一个特殊的格式,它描述了我必须在哪里查找页眉,页脚是什么以及图像信息在哪里(以解密形式)是。

因为我认为这样的查看器工作。像:

  • 打开文件
  • 读取不同的文件信息(页眉,页脚等)
  • “翻译” 的像素位置

我需要知道,如何让像素职位(如果是tiff文件)。

如何创建这个控件?我必须在哪里放置像素?

如果我错了,随时纠正我,因为ATM我真的没有一个想法,一切都只是猜测。

问候,

INNO

P.S:我宁愿在C#中的解决方案,但如果它是另一种语言,它的确定了。平台应该是Microsoft Windows(首先)。

P.P.S .:它应该没有已经安装的pdf- /查看应用程序。

回答

1

对于像这样的任何浏览器,您将不得不查看您想要显示的每种文件类型的规格并找出其数据的编码方式。某些图像格式建立在其他图像格式上,或使用类似的编码技术,而其他图像格式则完全不同。 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

HTH

0

以下是将图像转换为字节数组的方法。

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格式。