oronsultan Ответов: 3

Конвертировать изображения в base64 изображения в base64 PNG в JPG без сохранения


Привет,
Я ищу способ в c# конвертировать base64 png в base64 jpg.
Я извлекаю данные из базы данных, и мой api должен вернуть base64 в формате jpg без сохранение файла во время преобразования.
Спасибо.

Что я уже пробовал:

Я попытался вернуть миниатюру исходного изображения, но изображение не возвращается хорошо при сохранении его (для тестирования).

0x01AA

Смотрите здесь, чтобы разместить сообщение в самом низу: {.NET » C#} преобразование png в jpg @CODEKICKER[^]

3 Ответов

Рейтинг:
2

0x01AA

Это должно вам помочь

private byte[] Base64Png2Jpeg(string base64)
{
    byte[] jpgArray;
    Byte[] pngBytes = Convert.FromBase64String(base64);

    using (MemoryStream msPng = new MemoryStream(pngBytes))
    {
        using (Image  img = Image.FromStream(msPng))
        {
            using (MemoryStream msJpeg = new MemoryStream())
            {
                img.Save(msJpeg, ImageFormat.Jpeg);
                jpgArray = msJpeg.ToArray();
            }
        }
    }
    return (jpgArray);
}


Рейтинг:
1

Patrice T

Цитата:
Конвертировать изображения в base64 изображения в base64 PNG в JPG без сохранения

Процедура:
- Получить поток base64
- Конвертировать обратно в нормальный формат png
- Конвертировать в jpg
- Преобразование в base64
Цитата:
Я попытался вернуть миниатюру исходного изображения, но изображение не возвращается хорошо при сохранении его (для тестирования).

И мы должны знать, что не так ?


Рейтинг:
1

OriginalGriff

Считывание данных Base64 в экземпляр класса изображений через поток
Сохраните изображение в формате JPG в потоке и преобразуйте его в Base64.

private string FromBase64PNGToBase64JPG(string base64PNG)
    {
    byte[] bytes = Convert.FromBase64String(base64PNG);
    using (MemoryStream msIn = new MemoryStream(bytes))
        {
        using (Image pic = Image.FromStream(msIn))
            {
            using (MemoryStream msOut = new MemoryStream())
                {
                pic.Save(msOut, System.Drawing.Imaging.ImageFormat.Jpeg);
                return Convert.ToBase64String(msOut.ToArray());
                }
            }
        }
    }


0x01AA

Является ли возвращаемый тип вашего метода действительно правильным?

OriginalGriff

Ммм ... да?
https://docs.microsoft.com/en-us/dotnet/api/system.convert.tobase64string?view=netcore-3.1#System_Convert_ToBase64String_System_Byte___

0x01AA

Извините, я задал свой вопрос совершенно непонятно. Ваш код верен сам по себе, но я интерпретирую запрос OP о том, что ему нужен jpeg (двоичный файл). Оооо мой английский :lol:

OriginalGriff

90% времени, когда используется Base64, он представлен в виде строки (двоичные и байтовые массивы-это то, от чего вы пытаетесь уйти!)
Остальные 10%, конечно же, предназначены для шифрования ... :вздыхать: