我不需要非常高质量的图像。我会用套接字发送这个图像,所以我需要这个图像尽可能小我需要一种压缩图像的方法
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;
}
Motaz,
我以前做过一个图像处理项目。该项目需要对图像进行压缩/解压缩。你有两种选择可以做你想做的事:1) 你可以自己写算法。
2) 您可以使用库对图像进行压缩/解压缩。如果要使用库,还必须选择:A-您可以使用互联网上的开源库和文章,如以下内容:http://www.codeproject.com/Articles/4769/In-Memory-Image-Compression或者你可以使用像Aforge 这样的库
B-您可以使用商业库,如leadtools-sdk,它允许您通过更改质量因子来增加压缩。此外,对于它们的j2k格式,您可以设置图像的大小。有关代码示例:请参阅以下链接:对于质量因素:www.leadtools.com/help/leadtools/v175/dh/co/leadtools.codcs~leadtool.codcs.codecspenoptions.html#Example_CShttp://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.codcs~leadtool.codcs.codecsjpeg2000options.html#Example_CS使用TargetFileSize属性可以设置文件大小。
在我的事业中,我们决定使用商业工具包,因为它为我们提供了更多的功能、更好的质量和更好的性能。