我不需要高质量的图像。我将使用套接字发送此图像,因此我需要尽可能小的图像我需要一种压缩图像的方法
private void button1_Click_1(object sender, EventArgs e)
{
OpenFileDialog Open_File = new OpenFileDialog();
if (Open_File.ShowDialog() == DialogResult.OK)
{
FileStream fileStream = new FileStream(Open_File.FileName, FileMode.Open, FileAccess.Read);
int length = (int)fileStream.Length;
byte[] buffer = new byte[length];
fileStream.Read(buffer, 0, length);
Image x = byteArrayToImage(buffer);//this image I want to compression
//.............................
}
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
答案 0 :(得分:1)
穆塔兹,
我曾经在一些图像处理项目上工作过。该项目需要压缩/解压缩图像。您有两种选择可以做您想做的事情: 1)您可以自己编写算法。
2)您可以使用库进行图像的压缩/解压缩。 如果要使用库,还必须选择: 答 - 您可以使用互联网上提供的开源库和文章,如下所示: http://www.codeproject.com/Articles/4769/In-Memory-Image-Compression 或者你可以使用像Aforge这样的库
B-您可以使用诸如leadtools sdk之类的商业库,只需更改品质因数即可增加压缩率。此外,对于他们的j2k格式,您可以设置您希望图像具有的大小。对于代码示例:请参阅以下链接: 品质因数: www.leadtools.com/help/leadtools/v175/dh/co/leadtools.codecs~leadtools.codecs.codecspngoptions.html#Example_CS http://www.leadtools.com/help/leadtools/v175/dh/co/leadtools.codecs~leadtools.codecs.codecsjpegoptions.html#Example_CS 对于设置J2K文件大小: www.leadtools.com/help/leadtools/v175/dh/co/leadtools.codecs~leadtools.codecs.codecsjpeg2000options.html#Example_CS 使用TargetFileSize属性可以设置文件大小。
在我的事业中,我们决定使用商业工具包,因为它为我们提供了更多的功能,更好的质量和更好的性能。