C# Telegram.Bot (Bot.SendPhotoAsync). Как отправлять картинки без сжатия?
При отправке через Bot.SendPhotoAsync картинка теряет в качестве, решил использовать Bot.SendDocumentAsync но файл отправляеться без расширения, c названием document. Скриншот https://imgur.com/a/VkKQ5ex
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-SendPhotoAsync
case "/screenshot":
await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadDocument);
Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty));
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
}
bitmap.Save("C:/Windows/Temp/screen.jpg", ImageFormat.Jpeg);
}
const string screen = @"C:/Windows/Temp/screen.jpg";
using (var fileStream = new FileStream(screen, FileMode.Open, FileAccess.Read, FileShare.Read))
{
await Bot.SendPhotoAsync(
chatId: message.Chat.Id,
photo: new InputOnlineFile(fileStream),
caption: "Screenshot !"
);
}
break;
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=SendDocumentAsync
case "/screenshot":
await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadDocument);
Rectangle bounds = Screen.GetBounds(Screen.GetBounds(Point.Empty));
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
}
bitmap.Save("C:/Windows/Temp/screen.jpg", ImageFormat.Jpeg);
}
const string screen = @"C:/Windows/Temp/screen.jpg";
using (var fileStream = new FileStream(screen, FileMode.Open, FileAccess.Read, FileShare.Read))
{
await Bot.SendDocumentAsync(
chatId: message.Chat.Id,
document: new InputOnlineFile(fileStream),
caption: "Screenshot!"
);
}
break;
Ответы (1 шт):
После конвертирования потока в InputOnlineFile нужно этой переменной в поле FileName присвоить имя с раширением (например: text.txt)
Я могу ошибаться, но понимаю это так. У нас есть поток данных, который мы упаковываем в одно из полей составной переменной. Чтобы эта переменная стала чем то определенным, а не потоком, мы даем ей имя, ну и расширения там же вписывается. Вы ведь можете поменять расширение файла при изменении имени, если у Вас видны они в проводнике.