byte[] b;
        using (Bitmap bmp = new Bitmap(image))
        {
            b = PictureProvider.GetBytes(bmp);
        }
        ...
        using (Bitmap bmp = new Bitmap(image, image.Width - 100, image.Height - 100))
        {
            b = PictureProvider.GetBytes(bmp);    //为什么这个b在一些情况下反而会大于上面那个b
        }        public static byte[] GetBytes(Image image)
        {
            if (image == null) return null;
            using (MemoryStream ms = new MemoryStream())
            {
                image.Save(ms, ImageFormat.Jpeg);
                return ms.ToArray();
            }
        }摸索了好久,总是不得图片压缩的要领,现在想对二进制形式的图片进行指定大小的压缩,如果有成熟的方法或者例子,请告知一下,先谢过了~图片

解决方案 »

  1.   

    压缩还是改质量
    改质量之后 图片会变小 
    http://www.usingdll.com/7623.html
    一般都是质量变成27的 
    如果你要压缩的话直接bitmap map = new bitmap(源图片,400,300);
    这样修改大小你在传送的时候会小不少的传输量
      

  2.   

    你是要问为什么要大啊
    bitmap有一个缓冲区。。貌似和他有关系
    还有你获取byte的时候别用这种方法
    从网上找找 有一种可以获取byte[]数组的方法
    可能是你的这种方法有问题
      

  3.   

    refer: http://blog.csdn.net/chinacsharper/article/details/9865491
    最后有小例子下载。
      

  4.   

    直接save成png就完了,废那些破事干嘛。
      

  5.   


    “png”貌似不能解决问题吧~
      

  6.   


    “png”貌似不能解决问题吧~
    首先不明白你的问题到底是什么,指定大小的压缩是什么意思?是无论什么图片必须都压缩到统一的文件大小么?那必然会带来质量的损失。
    png是对图片数据的无损压缩。如果可以有损压缩那就用jpg设置质量就行了。
      

  7.   


    上面给的需求是只通过改变图片的Width和Height,来把所有图片(无论什么图片)压缩到统一文件大小。
    如果通过设置质量来压缩,那么将一张10MB的图片压缩到300KB,需要如何进行?
      

  8.   


    上面给的需求是只通过改变图片的Width和Height,来把所有图片(无论什么图片)压缩到统一文件大小。
    如果通过设置质量来压缩,那么将一张10MB的图片压缩到300KB,需要如何进行?
    我估计上面没那么傻,肯定是要你压缩到统一的图片尺寸。图片文件的大小和图片文件格式,图片文件尺寸,图片本身内容丰富程度,以及某些格式下图片质量相关。你的要求是300K,这个要求几乎没法完成,因为你没法控制图片本身内容,这样就没法精确确定图片文件到底有多大。
    不知道你明白了多少。
    还是先把我说的那3章书读完再来问吧。
      

  9.   

    参考下:http://q.cnblogs.com/q/46740/