[繪圖] 儲存的圖檔如何保持透明度?

看板MATLAB作者 (效應)時間13年前 (2012/03/20 19:32), 編輯推噓4(4012)
留言16則, 3人參與, 最新討論串1/1
大家晚安, 一個簡單卻難找的問題打擾一下 我目前的需求是要在畫出的圖形中疊上一塊半透明的mask matlab是可以畫出來沒有問題,但是存成圖檔之後半透明的效果都會消失 就像下圖所示 http://ppt.cc/CKqP 目前找到能保存半透明效果的兩個方法, 一個是手動 alt + PrtScr 但是繪出的圖形個數龐大,一張一張存會哭哭 另一個是在版上找到的,有人提供自動擷取全螢幕的語法串: robo = java.awt.Robot; t = java.awt.Toolkit.getDefaultToolkit(); rectangle = java.awt.Rectangle(t.getScreenSize()); image = robo.createScreenCapture(rectangle); filehandle = java.io.File('screencapture.jpg'); javax.imageio.ImageIO.write(image,'jpg',filehandle); imageview('screencapture.jpg'); 雖然看不懂,不過複製貼上後真的可以擷取畫面 缺點是一來顏色明顯有落差(對方很龜毛,很多無理的細節都很要求) 二來是擷取的是全螢幕,所以一樣要手動後製截圖 不論怎麼試都沒辦法保存透明度 上一位發問的版友,在2010年問的,爬文看來也是石沈大海 雖然不太樂觀阿,但還是上來碰碰運氣, 不曉得這一兩年間有沒有人已經解決這......應該算冷門的問題了 先謝過 最後附上繪出附圖的試驗用程式, 如果有哪位想熱心一試的版友的話也比較方便 clear all; X=-2:0.01:2; Y=3*X; figure(1); plot(X,Y,'g','LineWidth',10); hold on; B=fill([0 0 1 1],[0.5 1 1 0.5],'b'); set(B,'EdgeColor','none'); axis([-2,2,-2,2]); alpha(0.2); hold off; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.19.139

03/20 20:00, , 1F
F = getframe(gcf); % 先抓figure
03/20 20:00, 1F

03/20 20:00, , 2F
imwrite(F.cdata,'qq.bmp'); % 輸出為qq.bmp
03/20 20:00, 2F

03/20 20:02, , 3F
我用patch畫再存的圖有顯示透明度耶
03/20 20:02, 3F

03/20 20:04, , 4F
啊 fill也可以 奇怪 我沒有你的問題耶
03/20 20:04, 4F

03/20 20:06, , 5F
會不會是plot畫出來的東西不能給透明度?
03/20 20:06, 5F

03/20 20:06, , 6F
A=fill([1 -0.5 -0.5 1],[0 .866 -.866 0]+0.75,'r');
03/20 20:06, 6F

03/20 20:06, , 7F
set(A,'EdgeColor','none');set(A,'facealpha',.1);
03/20 20:06, 7F

03/20 20:06, , 8F
B=fill([0 0 1 1],[0.5 1 1 0.5],'b');
03/20 20:06, 8F

03/20 20:06, , 9F
set(B,'EdgeColor','none');set(B,'facealpha',.1);
03/20 20:06, 9F

03/20 20:06, , 10F
saveas(gcf,'test.emf')
03/20 20:06, 10F

03/20 20:07, , 11F
存出來的圖有透明度
03/20 20:07, 11F

03/20 20:09, , 12F
03/20 20:09, 12F

03/20 20:38, , 13F
oll大的方法可以保存透明度,但我還在想為什麼會抓不到圖軸^^
03/20 20:38, 13F

03/20 20:38, , 14F
至於問題可能真的像diva大說的,我重複了d大的作法真的可以保
03/20 20:38, 14F

03/20 20:39, , 15F
存透明度,但是plot就不行 T___T|||||
03/20 20:39, 15F

03/20 20:41, , 16F
再次痛哭流涕感謝兩位....... <(__ __)>
03/20 20:41, 16F
文章代碼(AID): #1FQ6hHu2 (MATLAB)