Tag: tiff

在C#中加载.tiff文件

我必须加载.tiff文件 我用Image.FromFile()和Bitmap.FromFile() 但是他们抛出OutOfMemoryException 有关如何加载这个的任何解决方案?

使用LibTiff.Net 2.3库时,如何让StripOffsets标记保持不变?

我有一个原始图像,其标签为StripOffsets = 768.当我在内存中编辑图像然后将其写回文件时,我尝试将StripOffsets标记手动设置为原始的相同值768(使用以下方法)。 //Set the height for the page output.SetField(TiffTag.ROWSPERSTRIP, ttPage[i].Height); //Set the offset for the page output.SetField(TiffTag.STRIPOFFSETS, ttPage[i].StripOffset); 由于某种原因,最终结果是StripOffsets = 8.为什么不按照我想要的方式设置StripOffsets? 另外一点也会影响我在AWare Systems AsTiffTagViewer中显示的“页面偏移量”。 我确信这与同样的问题有关。 不知怎的,我没有正确保存tiff。 也许我无法手动设置“StripOffsets”标签并自动设置? 看下面我的例子…… 来自AsTiffTagViewer http://sofzh.miximages.com/c%23/2nqe3nt.png的结果

JPEG压缩的TIFF比原始JPEG大得多

我正在尝试使用FreeImage.Net和C#将JPEG转换为使用JPEG压缩的TIFF 。 这很好,但是,对于低质量的JPGES,TIFF文件比原始文件大很多。 我假设TIFF大小不依赖于原始的JPEG质量,因为输出图像总是大致相同。 例如(转换屏幕截图): 2065kb JPEG (quality: 100%) –> 1282kb TIFF 379kb JPEG (quality: 50%) –> 1200kb TIFF 这种规模的增加对我们公司来说是不可接受的,因为我们的客户和我们正在处理大量文件。 有趣的是,当我用GIMP转换图像时,我得到了相同的结果。 现在我想知道: 这是根据TIFF标准还是特别的FreeImage / GIMP? (我认为两者都使用libtiff.dll )。 我想还有另一种方法,因为我们公司有一台扫描仪可以生成图像为JPEG压缩的TIFF,尺寸更小。 有没有人知道另一个库 (无论是否免费)可以更有效地处理这种转换,或者在FreeImage中实现这一点? 更新: 我看了一下TIFF 6.0规范 ,分析了我们的扫描仪生成的文件,并且能够编写一个将JPEG包装到一个非常简单的TIFF容器中的函数(也可以使用多个JPEG合并到多页TIFF中)。 对于那些对TIFF有所了解的人:我根据图像/页面的数量生成了一个新的TIFF文件(带有一个或多个IFD),并将现有JPEG图像的原始数据写入单个条带(每个IFD),使用以下字段/条目: NewSubfileType = 0 ImageWidth = //(width of the original JPEG) ImageLength = //(height of the original JPEG) BitsPerSample = {8, […]

如何使用C#以低分辨率forms提供高分辨率图像

尝试使用300dpi tif图像在网络上显示。 目前,当用户上传图片时,我正在动态创建缩略图。 如果创建的页面引用宽度为500x500px的高分辨率图像,我是否可以使用相同的function即时转换为gif / jpg。 什么是即将解决的jpg将被创建? 编辑: 为了进一步解释该用法,用户上传了大约3000×3000像素的300dpi图像。 用户正在使用这些图像来创建将用于pdf打印的目录页面。 当他们创建页面时,我们只需要72dpi图像显示在屏幕上,但是对于打印,需要300dpi图像。 显然,他们不想在页面上添加3000x3000px图像,因此需要将其调整到正确的查看区域,例如500x500px等。

如何在C#中检查损坏的TIFF图像?

我搜索了如何检查TIFF文件是否损坏。 大多数建议将Image.FromFile函数包装在try块中。 如果它抛出OutOfMemoryException,则其损坏。 有没有人用过这个? 有效吗? 任何替代品?

将tiff像素长宽比改为平方

我正在尝试在多页tiff文件上执行条形码识别。 但是tiff文件是从传真服务器(我无法控制)向我发送的,它以非方形像素宽高比保存tiff。 这导致图像由于纵横比而被严重压扁。 我需要将tiff转换为正方形像素长宽比,但不知道如何在C#中执行此操作。 我还需要拉伸图像,以便改变宽高比仍然使图像清晰可辨。 有没有人用C#做过这个? 或者有没有人使用过将执行此类程序的图像库?

如何在Silverlight图像控件上显示TIFF(以字节的forms)

我创建了一个窗口服务,将所有TIFF文件放入数据库并将其存储为Byte[] 。 现在我希望能够通过Silverlight Image控件显示它们 因此我在绑定XAML时使用Converter以将Byte[]转换为Bitmap因为Image.Source只接受eitheir URI(我没有将文件存储在服务器上,所以不能使用此方法)或Bitmap 。 BitmapImage bmi = new BitmapImage(); if (value != null) { ImageGallery imageGallery = value as ImageGallery; byte[] imageContent = imageGallery.ImageContent; string imageType = imageGallery.ImageType; using (MemoryStream ms = new MemoryStream(imageContent)) { bmi.SetSource(ms); } } return bmi; 但是,我在bmi.SetSource(ms)处获得exception,因为Silverlight仅支持JPEG和PNG图像。 所以我做了更多的研究,并知道我应该将TIFF的字节转换为JPEG或PNG的字节然后它将工作。 为此,我尝试了两种方法: 在服务器上进行转换:在我的RIA服务调用中,在检索ImageGallery ,我遍历可用图像以将TIFF的字节转换为JPEG的字节。 但它不工作….你能告诉我哪里做错了吗? public IQueryable GetImageGalleries() { var imageGalleries […]

读取tiff文件的尺寸和分辨率,而不先加载它

如何在不首先使用如下代码将内容加载到内存中的情况下读取tiff文件的尺寸(宽度和高度)和分辨率(水平和垂直)。 它对于大文件来说太慢了,我不需要操纵它们。 Image tif = Image.FromFile(@”C:\large_size.tif”); float width = tif.PhysicalDimension.Width; float height = tif.PhysicalDimension.Height; float hresolution = tif.HorizontalResolution; float vresolution = tif.VerticalResolution; tif.Dispose(); 编辑: 那些tiff文件是Bilevel,尺寸为30×42英寸。 文件大小约为1~2 MB。 所以上面的方法工作正常但速度慢。

将TIFF转换为1位

我写了一个桌面应用程序,它将8位TIFF转换为1位,但输出文件无法在Photoshop(或其他图形软件)中打开。 该应用程序的作用是什么 它迭代原始图像的每8个字节(每个像素1个字节) 然后将每个值转换为bool(所以0或1) 在一个字节中保存每8个像素 – 字节中的位与原始图像中的像素的顺序相同 我设置的TIFF标签:MINISBLACK,压缩为NONE,填充顺序为MSB2LSB,平面配置是连续的。 我正在使用BitMiracle的LibTiff.NET来读取和写入文件。 流行的软件无法打开输出我做错了什么? 输入图片: http : //www.filedropper.com/input 输出图片: http : //www.filedropper.com/output

在我的Tiff文件上应用CCITT压缩后,它会生成一个带有纯黑色背景的图像

使用LZW压缩创建tiff文件(默认): – System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(800, 1000); Graphics g = Graphics.FromImage(bitmap); g.DrawString(“Name: ” + Name.Text, outputFont, Brushes.Black, new PointF(0, 20)); g.DrawString(“Date Of Birth: ” + Date_Of_Birth.Text, outputFont, Brushes.Black, new PointF(0, 40)); g.DrawString(“Address: ” + Address.Text, outputFont, Brushes.Black, new PointF(0, 60)); g.DrawString(“City: ” + City.Text, outputFont, Brushes.Black, new PointF(0, 80)); g.DrawString(“State: ” + State.Text, outputFont, […]