如何直接将内存中的图片数据压缩成jpg格式? 使用Image..Save"a.jpeg",ImageFormat.Jpeg);可以把图片存储为jpeg格式的文件请问现在我想直接把屏幕抓图的图片在内存中就将其压缩为jpeg格式,要怎样做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可能理解有问题, 屏幕抓图的确是在内存中没错, 但是你无从得知他的地址. 也就无法读取. 除非你是自己设计的截图, 不使用WINDOWS自带的截图功能.你的思路应该转到如何从剪贴板来获取这些数据, 把它转成流,然后就好保存了. 可能表达有问题,其实我重点不在如何获得这些数据,我可以获得图像的数据流,也可以生成图片我是想把图像的数据流压缩的小一点,然后直接传给对方机器,而不生成图片。但是我现在找不到直接把图像的数据流压成jpg的方法,是不是要直接照jpeg压缩算法,然后直接压缩这些流,c#中有没有直接把图片流压缩城jpeg的方法? 貌似有个重载可以存成Stream的,不记得了,得查下 Image.Save (Stream, ImageCodecInfo, EncoderParameters) Image.Save (Stream, ImageFormat) 我用这样测试 MemoryStream spic = new MemoryStream(); Bitmap bm = new Bitmap(@"c:\1\aab.jpg"); bm.Save(spic, ImageFormat.Jpeg); StreamToFile(spic, @"c:\1\" + textBox1.Text + ".jpeg"); } public void StreamToFile(Stream stream, string fileName) { // 把 Stream 转换成 byte[] byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begin); // 把 byte[] 写入文件 FileStream fs = new FileStream(fileName, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write(bytes); bw.Close(); fs.Close(); }可是生成出来的图片显示不了,是什么原因?? 可能文件流位置有误,其实不必要那么麻烦。 Bitmap bm = new Bitmap(@"c:\1\aab.jpg"); System.Drawing.Image img = bm ; img.Save(@"c:\1\" + textBox1.Text + ".jpeg"); '保存为文件 这一行有问题: byte[] bytes = new byte[stream.Length];===〉 byte[] bytes = new byte[stream.Length-1]; c#如何设置弹出对话框的访问权限 用C#的webbrower如何控制网页中的CSS 关于周期提醒的问题? 如何让textbox的内容清空!包括回车! 使用vs2005自带的水晶报表时使用打印ActiveX无法安装的问题! 两个ListBox的互动操作,循环问题,请高手帮忙!请高手帮忙! vc#做windows应用程序,有哪些方法可以实现textbox文本框中数入的只能是数字?(请详细一点) 求助!c#如何进行内存映射操作大文本? C#发送邮件 提示 邮件发送失败,为什么那 怎么给自定义的菜单作阴影? c# 如何读取htm文件中的table数据 新手dataGridView问题
我可以获得图像的数据流,也可以生成图片
我是想把图像的数据流压缩的小一点,然后直接传给对方机器,而不生成图片。
但是我现在找不到直接把图像的数据流压成jpg的方法,是不是要直接照jpeg压缩算法,然后直接压缩这些流,c#中有没有直接把图片流压缩城jpeg的方法?
MemoryStream spic = new MemoryStream(); Bitmap bm = new Bitmap(@"c:\1\aab.jpg");
bm.Save(spic, ImageFormat.Jpeg);
StreamToFile(spic, @"c:\1\" + textBox1.Text + ".jpeg");
}
public void StreamToFile(Stream stream, string fileName)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin); // 把 byte[] 写入文件
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
可是生成出来的图片显示不了,是什么原因??
img.Save(@"c:\1\" + textBox1.Text + ".jpeg"); '保存为文件
byte[] bytes = new byte[stream.Length];
===〉 byte[] bytes = new byte[stream.Length-1];