0

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

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

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

因为我认为这样的观众是有作用的。像:

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

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

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

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

问候,

英诺

PS:我更喜欢 C# 的解决方案,但如果它是另一种语言,也可以。平台应该是 Microsoft Windows(首先)。

PPS:它应该可以在没有已安装的 pdf-/viewing-application 的情况下工作。

4

2 回答 2

1

对于任何这样的查看器,您必须查找要显示的每种文件类型的规范,并弄清楚其数据是如何编码的。一些图像格式建立在其他图像格式之上,或者使用类似的编码技术,而另一些则完全不同。PDF 是另一种野兽。我已经用它做了一些工作,据我记得(我可能是错的,已经有一段时间了)它基本上将自己表示为一系列对象,每个对象都有独特的位置、大小和各种属性,具体取决于对象类型.

我会看看维基百科。它实际上有一些关于一些不同图像格式的非常好的文章。

http://en.wikipedia.org/wiki/JPEG

它肯定会为您指出您想要涵盖的每种格式的官方标准文档。

最终,您可能最终不得不阅读/实现每种格式的 rfc:

JPEG - https://www.rfc-editor.org/rfc/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

高温高压

于 2010-08-03T12:02:23.567 回答
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格式。

于 2011-02-02T06:34:27.120 回答