許多感謝的圖片鏈接! 我已經嘗試過你的代碼(適用於你提供的`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
這將是一個***很容易***幫助,如果你有一個鏈接到原始圖像,以便我們可以重現問題 –