许多感谢的图片链接! 我已经尝试过你的代码(适用于你提供的`Singapore.tif'文件和一个合适的输出文件),它可以在我的系统上正常工作(Matlab 2013b,Linux 64位)。这是输出文件:
所以我很抱歉地说,有什么不对你的代码,它可能是与Windows上的“PNG”驱动程序或特定的安装。你有没有尝试打印到不同的驱动程序? (如JPG或PDF?)。如果您从图形的图形菜单中执行此操作,它是否真的有效,例如File->Save As
;或通过File->Export Setup->Export
具有适当的属性?
我唯一能想到的可能会让您的系统混淆的其他事情是试图打印一张uint8 rgb图像(您的新加坡图像)
和覆盖的双灰度图像。你可以看到,如果您的新加坡图像转换为这种双重解决了改变:
geoshow(Singapore(:,:,1:3), R)
到
geoshow(mat2gray(Singapore(:,:,1:3)), R)
也可能是值得手动试图绘制数据
,看看是否打印的工作原理如:
[Singapore, R] = geotiffread('Singapore.tif');
SingaporeXYImage = cat(3, flipud(Singapore(:,:,1)), ...
flipud(Singapore(:,:,2)), ...
flipud(Singapore(:,:,3)));
s = size(Singapore);
matrix3D = repmat(rand(s(1),s(2)), [1,1,3]);
imagesc(R.LongitudeLimits, R.LatitudeLimits, mat2gray(SingaporeXYImage));
hold on;
imagesc(R.LongitudeLimits, R.LatitudeLimits, matrix3D, 'alphadata', .2);
hold off;
axis xy equal tight;
xlim([103.605,104.04])
ylim([1.2,1.475])
print(gcf, '-dpng', 'test.png');
作为奖励,这里是如何您可能会在八度进行同样的事情,如果你有兴趣(我发现打印从八度曲线看起来更漂亮,尤其是在字体方面!):
pkg load mapping;
pkg load image;
[SingaporeStruct, R] = rasterread('Singapore.tif');
SingaporeImage = cat(3, SingaporeStruct(1:3).data); % note this is a matrix of
% "doubles" in range [0,255]
SingaporeImage = mat2gray(SingaporeImage); % Convert to appropriate [0,1] range
% for "doubles" rgb images!
s = size (SingaporeImage);
matrix3D = repmat (rand (s(1), s(2)), [1, 1, 3]);
imagesc (R.bbox(:,1), R.bbox(:,2), ...
SingaporeImage .* 0.8 + matrix3D .* 0.2); % manually create
% transparency effect
axis xy equal tight
xlim([103.605,104.04])
ylim([1.2,1.475])
print (gcf, '-dpng', 'test.png');
另外,对我的同事和他/她在答案中所付出的努力没有不尊重,但我会注意到您收到的其他答案本质上是完全错误的,您应该收回您的
marked accepted
,无论他/她的声明和警告如何关于收回明显答案的粗鲁程度。
mapshow
专门用于使用
MapCellsReference
格式的图像:
boston.tif
图像就是这样一个图像。
然而,您的图片使用
GeographicCellsReference
格式。前者使用
mapshow
,后者使用
geoshow
;
geoshow
将失败
boston.tif
,以相同的方式
mapshow
失败
Singapore.tif
。应该很明显,你的图像是一个“地理”变体,因为你的行
geoshow(Singapore(:,:,1:3), R)
工作没有发生错误。因此,使用
mapshow
的建议不是您的问题的正确答案,并且具有误导性。更何况,与你的实际问题完全不相干的是,为什么
print
命令不能从它的图形句柄中产生预期的结果,理论上这应该与这个数字如何生成无关。我不会有任何关于撤回你的“接受”标记的疑虑。不仅仅是因为这个网站可以作为许多其他观众的参考。仅仅因为你被欺负接受错误的答案而引导用户是没有意义的。
FaceAlpha = 1会发生什么? – NKN
我有相同的输出 – emax
这将是一个***很容易***帮助,如果你有一个链接到原始图像,以便我们可以重现问题 –