Обрезка Base64 / Bitmap, не обрезать его - PullRequest
0 голосов
/ 09 декабря 2018

В настоящее время я делаю функцию, которая может взять изображение base64 и обрезать его до нужного прямоугольника (X, Y, Ширина, Высота).Однако приведенный ниже код, похоже, не помогает, и я не знаю почему.Возвращает изображение без изменений и без обрезки.

Кто-нибудь может увидеть проблему?:)

public static string CropImage(string base64, int x, int y, int width, int height)
        {
            byte[] bytes = Convert.FromBase64String(base64);
            using (var ms = new MemoryStream(bytes))
            {
                Bitmap bmp = new Bitmap(ms);
                Rectangle rect = new Rectangle(x, y, width, height);

                Bitmap croppedBitmap = new Bitmap(rect.Width, rect.Height, bmp.PixelFormat);

                using (Graphics gfx = Graphics.FromImage(croppedBitmap))
                {
                    gfx.DrawImage(bmp, 0, 0, rect, GraphicsUnit.Pixel);
                }

                using (MemoryStream ms2 = new MemoryStream())
                {
                    bmp.Save(ms2, ImageFormat.Jpeg);
                    byte[] byteImage = ms2.ToArray();
                    var croppedBase64 = Convert.ToBase64String(byteImage);
                    return croppedBase64;
                }
            }
        }

1 Ответ

0 голосов
/ 09 декабря 2018

Обрезанное изображение в croppedBitmap, bmp - исходное изображение.Я думаю, что вы хотите использовать croppedBitmap во втором потоке памяти:

using (MemoryStream ms2 = new MemoryStream())
    {
        croppedBitmap.Save(ms2, ImageFormat.Jpeg);
        byte[] byteImage = ms2.ToArray();
        var croppedBase64 = Convert.ToBase64String(byteImage);
        return croppedBase64;
    }
...