使位图透明是一个较小的图像,以字节为单位

Fil*_* DO 0 c# graphics optimization bitmap

在构建位图并共同构建一些位图并将它们组合到一个位图中时,它对.MakeTransparent()有帮助.

或者,在我将Bitmap发送到请求客户端之前,如果我.MakeTransparent()它会变小吗?不是宽度或高度,以字节为单位购买?

换句话说,.MakeTransparent()会优化Bitmap,如果不是,有人会在通过互联网通过网络发送到请求客户端之前获得有关如何优化Bitmap的任何建议吗?

有问题的代码是 sheet.MakeTransparent()

 internal static Task<Bitmap> GetDoorSecheduleSheetAsync(ShopDrawing.DoorSchedules schedules, RotateFlipType rotate, byte schedulesPerSheet, byte currentI)
{
    return Task.Run(() =>
        {
            var sheet = new Bitmap(DrawingOptions.PAGE_HEIGHT_SIZE, DrawingOptions.PAGE_WIDTH_SIZE);
            sheet.SetResolution(150, 150);
            byte scheduleCnt = 0;
            float prevWidth = 0;

            using (Graphics dc = Graphics.FromImage(sheet))
            {
               dc.Clear(Color.White);

                using (Pen pen = new Pen(Color.FromArgb(80, Color.Black), 4))
                {
                    for (; currentI < schedules.Count(); currentI++)
                    {
                        if (scheduleCnt > 0)
                        {
                            dc.DrawLine(pen, prevWidth, 380/*need constant for start height*/, prevWidth, sheet.Height);
                        };

                        using (var doorSchedule = schedules[currentI].Door)
                        {
                            dc.DrawImage(doorSchedule, prevWidth + 50, 380/*need constant for start height*/);
                            prevWidth += doorSchedule.Width + 50;
                            scheduleCnt++;
                        }

                        if (scheduleCnt == schedulesPerSheet)
                        {
                            sheet.RotateFlip(rotate);
                            sheet.MakeTransparent();
                            return sheet;
                        }
                    };
                };
            };
            sheet.MakeTransparent();
            sheet.RotateFlip(rotate);
            return sheet;
        });
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ale*_*kov 5

BMP是非压缩格式,每个像素基本上都是原始字节(或调色板索引) - 除了改变每像素位数之外,没有变换会改变结果文件的大小.

不要通过网络发送未压缩的bmp - 使用无损PNG/GIF或(如果它适用于你)JPG.