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

如何在Matlab中保存图像以获取指定的输出尺寸?

解决Matlab中保存图像到指定输出尺寸的问题

你遇到的核心问题是imwrite和print的工作逻辑完全不同:imwrite直接保存图像矩阵的原始像素尺寸,完全不理会你给figure设置的PaperPosition参数;而print是把figure窗口的渲染内容按照你设置的纸张参数输出。咱们一步步拆解解决:

为什么imwrite达不到预期?

imwrite(imgComb, 'myImage.tiff')本质是把imgComb这个像素矩阵直接写入文件,它不涉及任何figure窗口的渲染流程,所以你设置的那些纸张尺寸参数对它完全无效——输出的就是矩阵本身的像素大小。

用print实现指定尺寸的正确姿势

你当前的print代码已经搭了框架,但还需要补充几个细节来消除冗余空白、确保尺寸精准:

  1. 消除figure的边框与空白
    默认figure会自带边框、坐标轴和留白,这会导致实际输出的图像比你设置的尺寸小。可以添加这些代码:
set(myFig, 'Color','white'); % 按需设置背景色
set(myFig, 'InvertHardCopy','off'); % 避免背景色反转
set(myFig, 'Units','centimeters');
set(myFig, 'Position', [1 1 15.24 7.62]); % 让figure窗口本身和目标尺寸一致
axis off; % 隐藏坐标轴(如果不需要显示)
  1. 让图像填满figure区域
    imshow默认会自动调整图像适配窗口,可能出现拉伸或留白。改用imshow(imgComb, 'Border','tight')可以让图像完全填满figure,没有多余空白。

  2. 完整修正后的代码
    把这些细节整合进去,最终代码如下:

%# Read image 
I = imread('img2.png'); 
%# Extract central portion of image 
[ny, nx] = size(I); 
P = I(round(ny/2)-120:round(ny/2)+120, round(nx/2)-120:round(nx/2)+120); 
imgComb = [P P; P P]; 

myFig = figure; 
imshow(imgComb, 'Border','tight'); % 关键:消除图像周围空白
axis off; % 隐藏坐标轴

% 设置figure与打印参数
myFig.Units = 'centimeters';
myFig.Position = [0 0 15.24 7.62]; % 窗口尺寸匹配目标输出
myFig.PaperUnits = 'centimeters'; 
myFig.PaperPosition = [0 0 15.24 7.62]; 
myFig.PaperPositionMode = 'manual'; 
myFig.InvertHardCopy = 'off';

%# 保存图像
print('myImage', '-dtiff', '-r300'); % -r300设置分辨率,可按需调整

额外技巧:用imwrite直接生成指定尺寸

如果你一定要用imwrite,需要先把图像矩阵缩放到目标尺寸对应的像素数。比如你要15.24cm×7.62cm,假设分辨率是300dpi,换算成像素:

  • 宽度:15.24 * 300 / 2.54 ≈ 1800像素
  • 高度:7.62 * 300 / 2.54 ≈ 900像素

然后用imresize调整后保存:

targetWidth = round(15.24 * 300 / 2.54);
targetHeight = round(7.62 * 300 / 2.54);
imgResized = imresize(imgComb, [targetHeight targetWidth]);
imwrite(imgResized, 'myImage.tiff', 'Resolution', 300);

这样保存的图像在查看或打印时,尺寸就会符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:20:23