如何实现图像或pdf查看器?

时间:2010-08-03 11:47:32

标签: c# windows user-controls imaging

出于学习目的,我想知道如何自己实现图像(和/或)pdf查看器。

我对实现这样的事情的一般方法感兴趣。

我已经读过网上的不同格式(tiff / pdf),所以我发现这些文件有一种特殊的格式,描述了我需要查找标题的位置,页脚所在的位置以及图像信息的位置(以解密的形式)是。

因为我觉得这样的观众工作......像:

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

我需要知道,如何获取像素位置(如果是tiff文件)。

如何将其创建为控件?我必须在哪里放置像素?

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

此致

INNO

P.S。:我更喜欢C#中的解决方案,但如果它是另一种语言,那也没问题。平台应该是Microsoft Windows(首先)。

P.P.S。:它应该在没有安装pdf- / viewing-application的情况下工作。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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格式。

相关问题