【问题标题】:how to rewrite compressed bitmap to bitmap variable c#如何将压缩位图重写为位图变量c#
【发布时间】:2015-12-18 05:24:00
【问题描述】:

我想将压缩位图传递给位图 bmp(变量)。此代码将压缩位图保存到文件中(压缩),但不会更改“变量中”的位图大小,我想将其传递给变量而不创建新文件然后读取它。有任何想法吗?或者我只是错过了一些合适的方法?

ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
        EncoderParameters myEncoderParameters = new EncoderParameters(1);
        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 30L);
        myEncoderParameters.Param[0] = myEncoderParameter;


        Bitmap bmp = CaptureDesktopWithCursor2();

        bmp.Save(@"C:\Users\sebb\Desktop\TestPhotoQualityFifty.jpg", jpgEncoder, myEncoderParameters);
        byte[] lol = imageToByteArray(bmp);

【问题讨论】:

    标签: c# bitmap compression


    【解决方案1】:

    您是否考虑将数据存储(或包装)在内存流中,而不是使用真实文件?

    MemoryStream memoryStream = new MemoryStream();
    bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    

    查看作为示例提供的类

    public class BitmapWrapper
    {
        private MemoryStream _stream = new MemoryStream () ;
    
        public Bitmap GetBitmap () 
        { 
            return new Bitmap ( _stream ) ; 
        }
    
        public void SetBitmap ( Bitmap value , ImageFormat format )
        {
            value.Save ( _stream, format ) ;
        }
    }
    

    【讨论】:

    • 谢谢,效果很好,不知道我是怎么错过的:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多