-2

我不需要非常高质量的图像。我将使用套接字发送此图像,因此我需要此图像尽可能小我需要一种压缩图像的方法

    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;
    }
4

1 回答 1

1

莫塔兹,

不久前,我从事了一个图像处理项目。该项目需要对图像进行压缩/解压缩。您有两种选择可以做您想做的事情:1)您可以自己编写算法。

2)您可以使用库来压缩/解压缩图像。如果您想使用库,您还必须选择: A- 您可以使用 Internet 上提供的开源库和文章,例如: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 属性可以设置文件大小。

在我的事业中,我们决定使用商业工具包,因为它为我们提供了更多功能、更好的质量和更好的性能。

于 2012-08-28T12:35:05.717 回答