作者WRO (效應)
看板MATLAB
標題[繪圖] 儲存的圖檔如何保持透明度?
時間Tue Mar 20 19:32:30 2012
大家晚安,
一個簡單卻難找的問題打擾一下
我目前的需求是要在畫出的圖形中疊上一塊半透明的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
1F:推 olliekr:F = getframe(gcf); % 先抓figure 03/20 20:00
2F:→ olliekr:imwrite(F.cdata,'qq.bmp'); % 輸出為qq.bmp 03/20 20:00
3F:推 diva:我用patch畫再存的圖有顯示透明度耶 03/20 20:02
4F:→ diva:啊 fill也可以 奇怪 我沒有你的問題耶 03/20 20:04
5F:推 diva:會不會是plot畫出來的東西不能給透明度? 03/20 20:06
6F:→ diva:A=fill([1 -0.5 -0.5 1],[0 .866 -.866 0]+0.75,'r'); 03/20 20:06
7F:→ diva:set(A,'EdgeColor','none');set(A,'facealpha',.1); 03/20 20:06
8F:→ diva:B=fill([0 0 1 1],[0.5 1 1 0.5],'b'); 03/20 20:06
9F:→ diva:set(B,'EdgeColor','none');set(B,'facealpha',.1); 03/20 20:06
10F:→ diva:saveas(gcf,'test.emf') 03/20 20:06
11F:→ diva:存出來的圖有透明度 03/20 20:07
13F:→ WRO:oll大的方法可以保存透明度,但我還在想為什麼會抓不到圖軸^^ 03/20 20:38
14F:→ WRO:至於問題可能真的像diva大說的,我重複了d大的作法真的可以保 03/20 20:38
15F:→ WRO:存透明度,但是plot就不行 T___T||||| 03/20 20:39
16F:→ WRO:再次痛哭流涕感謝兩位....... <(__ __)> 03/20 20:41