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

从Zip压缩包读取PNG图片并显示到PictureBox的实现问题

从Zip压缩包读取Bitmap并显示到PictureBox

直接基于你现有逻辑修改,核心是把StreamReader读取文本的逻辑换成Bitmap从流加载的逻辑,同时注意资源的正确释放:

using System.Text;
using System.IO.Compression;
using System.Windows.Forms;
using System.Drawing;

public partial class Form1 : Form
{
    private void Form1_Load(object sender, EventArgs e)
    {
        string zipFileFullPath = "C:\\Tester\\adv.jar";
        // 替换成你的图片文件名,比如"pack.png"
        string targetImageName = "pack.png";

        using (var zipArchive = ZipFile.OpenRead(zipFileFullPath))
        {
            // 查找目标图片条目
            var imageEntry = zipArchive.Entries
                .FirstOrDefault(x => x.Name.Equals(targetImageName, StringComparison.InvariantCulture));

            if (imageEntry != null)
            {
                // 打开图片流并加载Bitmap
                using (var imageStream = imageEntry.Open())
                {
                    // 从流创建Bitmap,克隆副本避免流关闭后Bitmap失效
                    Bitmap bitmap = new Bitmap(imageStream);
                    pictureBox1.Image = (Bitmap)bitmap.Clone();
                }
            }
        }
    }

    // Form关闭时释放Bitmap资源,防止内存泄漏
    protected override void OnFormClosed(FormClosedEventArgs e)
    {
        base.OnFormClosed(e);
        pictureBox1.Image?.Dispose();
    }
}

关键注意点:

  • 资源释放:用using包裹ZipArchive和图片流,确保用完后自动释放资源;Form关闭时手动释放PictureBox的Image,避免内存泄漏。
  • 空引用判断:必须检查imageEntry是否为null,防止找不到图片时抛出空引用异常。
  • Bitmap克隆:Bitmap基于流创建时,流关闭后原始Bitmap会失效,因此用Clone()创建独立副本赋值给PictureBox。

内容的提问来源于stack exchange,提问作者Caleb Starks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:22:37