BMP,TIF文件在C#里如何压缩?

ladofwind 2010-03-11 10:58:02
我从摄像头抓下TIF文件,程序进行了TIF Group4Compression,可是在要求的dpi(200dpi)和A4大小下,
始终超过30k,大概40多,50多k的样子,达不到要求,想问问有没有C#压缩tif 或者bmp 的方法,
最好能提供程序,非常感谢...
...全文
706 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjjin80108 2011-07-31
  • 打赏
  • 举报
回复
楼主,你抓取tif格式是怎么抓取的,也是代码抓取的么,现在搞定了没?我现在也遇到你这棘手的问题了,求楼主赐教啊,小弟QQ5571477
ladofwind 2010-03-17
  • 打赏
  • 举报
回复
是二值保存的,还是大.不知道有什么API或者什么参数能调节图片大小,
应该是有的,只是我不知道.
wenbin 2010-03-17
  • 打赏
  • 举报
回复
你的要求是黑白的,那么你可以使用二值图像来保存,这样在大小上就比彩色图像小了

TIFF格式不太了解,BMP就可以使用8位的来保存。然后再用JPG格式来压缩。

只是个想法
ladofwind 2010-03-17
  • 打赏
  • 举报
回复
期待高人指点
ladofwind 2010-03-16
  • 打赏
  • 举报
回复
不可以的,我的系统的输出是另一个系统的输入,要求tif格式,30k以下,A4纸大小,200dpi,黑白,
我始终搞不到这么小,最小到42k
guyehanxinlei 2010-03-15
  • 打赏
  • 举报
回复
Friendly UP!
ladofwind 2010-03-15
  • 打赏
  • 举报
回复
用了降低质量,不行

EncoderParameters ep = new EncoderParameters(3);
if (this.pbMain.Image.PixelFormat == PixelFormat.Format1bppIndexed) //by hxq, 黑白用G4压缩
{
ep.Param[0] = new EncoderParameter(Encoder.Compression, (long)EncoderValue.CompressionCCITT4);
ep.Param[1] = new EncoderParameter(Encoder.Quality, 0L);
ep.Param[2] = new EncoderParameter(Encoder.ColorDepth, 1L);
}

我用System.Drawing.Imaging.Encoder 来压缩了,quality都设置成0了,竟然还是超过大小,
而且这个quality参数感觉没什么用,压缩比例几乎可以忽略,

还有什么办法吗?
cjcgy 2010-03-15
  • 打赏
  • 举报
回复
保存的时候有个质量的参数。
降低质量可以么?
mail_ricklee 2010-03-15
  • 打赏
  • 举报
回复

public static byte[] f_imageToByte(string path,string iszip)
{
var str=HttpContext.Current.Server.MapPath(path);
var stream = new MemoryStream();
if (!File.Exists(str))
{
return null;
}
var bitmap = Bitmap.FromFile(str);
bitmap.Save(stream,ImageFormat.Jpeg);
var bts=stream.ToArray();
stream.Close();
stream.Dispose();
if (iszip=="1")
{
//str = Convert.ToBase64String(bts);
bts = NickLee.Common.CompressData.Compress<byte[]>(bts);
}
return bts;
}

public static void f_byteToImage(byte[] bts, string iszip,string path)
{
var str=string.Empty;
if (iszip == "1")
{
bts = NickLee.Common.CompressData.UnCompressObject<byte[]>(bts);
//bts = Convert.FromBase64String(str);
}
var ms = new MemoryStream(bts,false);
var objBitmap = new Bitmap(ms);
objBitmap.Save(path, ImageFormat.Jpeg);
ms.Close();
ms.Dispose();
}


参考FortuneBase
参考地址www.cnblogs.com/mail-ricklee
ladofwind 2010-03-15
  • 打赏
  • 举报
回复
愁人,没人懂啊
myrroom 2010-03-15
  • 打赏
  • 举报
回复
在保存的时候用ImageFormat.XXX不可以吗?换成Png的或者Jpg
ladofwind 2010-03-15
  • 打赏
  • 举报
回复
崩溃了,没人了吗?
ladofwind 2010-03-15
  • 打赏
  • 举报
回复
我倒是想损失些质量,能缩小也行,难道没办法吗?
vrhero 2010-03-15
  • 打赏
  • 举报
回复
位图不可能无损压缩,必须换成有损格式...
ladofwind 2010-03-15
  • 打赏
  • 举报
回复
谢谢,还有高人来看看吗?
ladofwind 2010-03-12
  • 打赏
  • 举报
回复
http://xiedidan.blog.sohu.com/27294897.html C#下的BMP图像压缩类
这个是bmp转jpg,我需要的是bmp或者tif文件的压缩,但不改格式,不过还是谢谢了
ladofwind 2010-03-12
  • 打赏
  • 举报
回复
继续问,求解
cuike519 2010-03-11
  • 打赏
  • 举报
回复
图片压缩算法有标准的几种压缩方式,按照压缩规范来实现或者找个第三方的组件也可以。。。
a68351153 2010-03-11
  • 打赏
  • 举报
回复
又是关于图形图像的,个人对于这个tif压缩算法不是很了解,网上顺便找了几个,你自己看看吧,希望对你有帮助:

http://www.nocoo.us/2008/08/csharp-jpg-compact/ C#批量压缩图片(BMP/PNG/JPG)

http://xiedidan.blog.sohu.com/27294897.html C#下的BMP图像压缩类

等等,不合适的,你自己再找找看。
ladofwind 2010-03-11
  • 打赏
  • 举报
回复
关系不大,上面是如何显示,我的是如何压缩
加载更多回复(2)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧