You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发Telegram Bot:如何不存盘直接发送合成Bitmap?

直接在内存中生成图片并通过Telegram Bot发送(无需保存到磁盘)

没问题,我帮你搞定这个需求——不用把生成的图片存到本地磁盘,直接在内存里处理完就发给Telegram Bot完全可以实现,核心就是把Bitmap转成内存流,再传给Telegram的接口。

核心思路

我们可以把最终生成的finalImage写入到MemoryStream(内存流)中,然后把流的位置重置到起始点,再用Telegram Bot的SendPhotoAsync或SendDocumentAsync接口发送这个内存流即可,全程不需要碰磁盘。

修改后的完整代码示例

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using Telegram.Bot;
using Telegram.Bot.Types.InputFiles;

// 假设你已经初始化了botClient和获取了chatId
var botClient = new TelegramBotClient("你的BotToken");
long yourChatId = 123456789; // 替换成实际的聊天ID

using (Bitmap speedometer = new Bitmap(@"C:\Immagini\bot\speedometer.png"))
using (Bitmap pointer = new Bitmap(@"C:\Immagini\bot\pointer.png"))
using (Bitmap finalImage = new Bitmap(speedometer))
using (Graphics graphics = Graphics.FromImage(finalImage))
{
    // 旋转指针并绘制到仪表盘上
    using (Bitmap rotatedPointer = RotateImage(pointer, efficienza_int * (float)1.8))
    {
        rotatedPointer.MakeTransparent(Color.White);
        graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        graphics.DrawImage(rotatedPointer, 0, 0);
    }

    // 将Bitmap写入内存流
    using (MemoryStream ms = new MemoryStream())
    {
        finalImage.Save(ms, ImageFormat.Png);
        ms.Position = 0; // 必须重置流的位置到开头,否则Telegram读不到内容

        // 调用SendPhotoAsync发送图片(会直接预览)
        await botClient.SendPhotoAsync(
            chatId: yourChatId,
            photo: new InputFileStream(ms, "speedometer.png") // 第二个参数是文件名,用于识别文件类型
        );

        // 如果想用SendDocumentAsync发送(当成文件),替换成下面的代码:
        // await botClient.SendDocumentAsync(
        //     chatId: yourChatId,
        //     document: new InputFileStream(ms, "speedometer.png")
        // );
    }
}

几个关键注意点

  • 重置流位置:调用finalImage.Save(ms, ...)后,流的位置会停在末尾,一定要设置ms.Position = 0,否则Telegram的接口会读取空内容。
  • 资源释放:把所有Bitmap和MemoryStream都放到using语句里,这样系统会自动释放资源,避免内存泄漏。
  • 文件类型指定:InputFileStream的第二个参数是文件名,后缀要正确(比如.png),这样Telegram才能识别图片格式。

内容的提问来源于stack exchange,提问作者Manuel Valente Mysteriis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:47:21