Загружайте изображение из MemoryStream, а не прямо с жесткого диска - PullRequest
0 голосов
/ 08 июня 2019
    using (MemoryStream stream = new MemoryStream())
        {                                                   
            bitMap.Save(stream, System.DrawingCore.Imaging.ImageFormat.Jpeg);
            stream.Seek(0, SeekOrigin.Begin);
            bitMap.Dispose();                                
            await Context.Channel.SendFileAsync(stream, "Text");                
        }

Очень быстро, потому что я не могу найти ответ конкретно.Я беру изображение с моего жесткого диска, применяю к нему текст и загружаю его на сервер.Это просто для мемов.

Проблема в том, что я не хочу сохранять его на жестком диске перед его загрузкой.Я бы предпочел оставить его в MemoryStream.Результатом здесь является то, что он загружает изображение, как если бы оно было вместо передачи файла, и изображение не отображается, пока люди не загрузят его сначала.

Я полагаю, что это потому, что Discord не различает, какой файл находится в потоке, ивместо этого просто отправляю это как перевод огня.

Могу ли я что-нибудь сделать?

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Попробуйте указать имя файла с расширением, которое идентифицирует содержимое файла, без этого API не имеет информации, какой тип файла вы отправляете:

await Context.Channel.SendFileAsync(stream, "image.jpeg", "Text");
1 голос
/ 08 июня 2019

Я извиняюсь, но, похоже, случайно наткнулся на свой собственный ответ. В случае, если у кого-то еще есть эта проблема, я отвечу на нее, чтобы помочь им.

await Context.Channel.SendFileAsync(stream, "Text");  

Второй параметр - заголовок для файла. В зависимости от формата файла, который вы выбрали во время Bitmap.Save (), введите расширение файла после заголовка. Текст должен быть Text.jpg в моем примере.

Похоже, что это скажет Discord загружать его как изображение вместо передачи файла.

...