MATLAB与Octave新版本JPEG压缩过强致失真,如何调整压缩强度?
解决MATLAB/Octave导出JPEG时压缩失真的问题
你观察到的新版本MATLAB和Octave默认JPEG压缩强度过高导致失真的问题确实存在,好在不需要额外工具或切换格式,直接通过print命令的参数就能调整压缩质量:
针对MATLAB的设置
MATLAB的print命令其实支持指定JPEG质量参数,只是容易被忽略这个格式特定选项。你可以通过两种方式设置:
- 在
-djpeg后直接跟上质量值(范围1-100,100为最低压缩/最高质量):
print(strcat("test_jpeg_size_", description ,'.jpg'), '-djpeg90');
- 使用单独的
-quality参数明确指定:
print(strcat("test_jpeg_size_", description ,'.jpg'), '-djpeg', '-quality', 90);
把质量值调到90或更高(比如100),就能大幅减少失真,文件大小也会接近旧版无失真的水平。
针对Octave的设置
Octave同样支持通过-quality参数控制JPEG压缩强度,修改你的代码如下:
print(strcat("test_jpeg_size_", description ,'.jpg'), '-djpeg', '-quality', 90);
如果希望所有绘图都默认使用这个质量,还可以设置全局默认值:
set(0, 'defaultfigureprintoptions', '-quality 90');
同样,质量值越高,压缩率越低,失真越少。如果要复刻Octave 3的无失真效果,可以尝试将质量设为100。
这样修改后,你就能直接导出低压缩、低失真的JPEG图像,不需要额外工具或切换到PNG格式。
内容的提问来源于stack exchange,提问作者tardis




