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

移除plt.imshow显示后下载图片的白色边框问题求助

问题

我正在实现图像秘密共享功能,显示原始图像的代码如下:

image_path = "lena.jpg"
image_array = load_grayscale_image(image_path)

plt.imshow(image_array, cmap='gray')
plt.axis('off')
plt.show()

在Google Colab中通过右键“另存为”下载该图像时,图片带有白色边框,这会影响我的精度计算。我已经尝试了以下几种方法,但均无效:

  • plt.savefig('image.png', bbox_inches='tight', pad_inches=0)
  • plt.figure(figsize=(256 / 100.0, 256 / 100.0), dpi=100.0)
  • plt.tight_layout()
    目前保存后的图像仍存在空白区域。
解决方法

在Colab中右键保存Matplotlib生成的图像时,实际保存的是Colab网页渲染后的容器元素,白边是Colab的展示框架导致的,并非Matplotlib代码问题。要得到无白边的精准图像,别用右键另存,直接通过代码保存后下载:

  1. 代码保存无白边图像
    调整代码,先创建和图像尺寸完全匹配的画布,再关闭所有边距后保存:

    image_path = "lena.jpg"
    image_array = load_grayscale_image(image_path)
    
    # 获取图像的高和宽
    h, w = image_array.shape
    # 创建和图像尺寸一致的画布(dpi=100时,figsize单位为英寸,对应像素w=figsize[0]*100)
    plt.figure(figsize=(w/100, h/100), dpi=100)
    plt.imshow(image_array, cmap='gray')
    plt.axis('off')
    # 彻底移除所有内边距和间距
    plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
    plt.margins(0, 0)
    # 保存图像,确保无额外边距
    plt.savefig('lena_no_border.png', bbox_inches='tight', pad_inches=0, dpi=100)
    plt.show()
    
  2. 下载保存的图像
    运行代码后,打开Colab左侧的「文件」面板,找到生成的lena_no_border.png,右键选择「下载」即可。

如果需要自动触发下载,可添加以下代码:

from google.colab import files
files.download('lena_no_border.png')

这样保存的图像完全匹配原始图像尺寸,不会有任何白边。

内容的提问来源于stack exchange,提问作者Aditya Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:14:51