2010-03-19 10 views
6

MATLAB में, आप EPS प्रारूप की छवि में मैट्रिक्स कैसे लिखते हैं?MATLAB - एक ईपीएस फ़ाइल में छवि लिखें

ऐसा लगता है कि imwrite ईपीएस का समर्थन नहीं करता है।

Convert Linux सर्वर मैं उपयोग कर रहा हूँ पर काम नहीं कर रहा:

$ convert exploss_stumps.jpg exploss_stumps.eps 
convert: missing an image filename `exploss_stumps.eps' @ convert.c/ConvertImageCommand/2838 

क्यों?

figH = figure('visible','off') ; 
imshow(img,'border','tight',...  %# Display in a figure window without 
     'InitialMagnification',100); %# a border at full magnification 
print(strcat(filepath,'/', dataset,'_feature_',num2str(j), '.eps'),'-depsc2'); 
    close(figH) ; 

हालांकि मुझे मिल गया:


मैं टर्मिनल मोड के तहत gnovice का विचार करने की कोशिश की

??? ==> imshow का उपयोग कर त्रुटि 1 9 1
आईएमएसएचओ को जावा चलाने की आवश्यकता है।

== करने में त्रुटि> पर 122
imshow (img, 'बॉर्डर' study_weaker, 'तंग', ...% # एक आंकड़ा विंडो में बिना

191 त्रुटि (ईद प्रदर्शन, '% s की आवश्यकता है जावा चलाने के लिए ', ऊपरी (mfilename));।

मैं इसे कैसे ठीक कर सकते हैं

+0

साइपी का उपयोग करके एक ही चीज़ का प्रयास करें? पहले टेक्स्ट में सहेजें और फिर Asymptote का उपयोग करें या यूनिक्स कमांड को कन्वर्ट करें? –

+0

धन्यवाद! कन्वर्ट अच्छी तरह से काम नहीं कर रहा है। – Tim

+0

ध्यान दें कि आप जावा के साथ "टर्मिनल" मोड में भी चला सकते हैं। बस "-nojava" ध्वज के बजाय "-nodesktop" ध्वज के साथ MATLAB प्रारंभ करें। –

उत्तर

6

एक संभव समाधान अपनी छवि IMSHOW का उपयोग कर साजिश है, तो का उपयोग कर एक .eps के रूप में पूरे आंकड़ा प्रिंट? PRINT:

img = imread('peppers.png');   %# A sample image 
imshow(img,'Border','tight',...  %# Display in a figure window without 
     'InitialMagnification',100); %# a border at full magnification 
print('new_image.eps','-deps');  %# Print the figure as a B&W eps 

इस समाधान में एक कमी यह है कि यदि छवि स्क्रीन पर फिट होने के लिए बहुत बड़ी है, तो IMSHOW फिट करने के लिए इसे छोटा कर देगा, जिससे छवि के ऑन-स्क्रीन रिज़ॉल्यूशन को कम किया जाएगा। हालांकि, आप -r<number> option for the PRINT function का उपयोग कर सहेजी गई छवि के अंतिम संकल्प को समायोजित कर सकते हैं। उदाहरण के लिए, आप ऐसा करके 300 dpi के एक संकल्प के साथ एक Encapsulated स्तर 2 रंग पोस्टस्क्रिप्ट के रूप में अपने आंकड़ा मुद्रित कर सकते हैं निम्नलिखित:

print('new_image.eps','-depsc2','-r300'); 

संपादित करें: आप IMSHOW का उपयोग करने में असमर्थ हैं (क्योंकि या तो आप डॉन ' टी Image Processing Toolbox है या क्योंकि आप एक MATLAB मोड का उपयोग कर रहे हैं कि यह अनुमति नहीं है), यहाँ एक वैकल्पिक तरीका बना सकते हैं और यह आंकड़ा मुद्रित करने के लिए है:

img = imread('peppers.png');  %# A sample image 
imagesc(img);      %# Plot the image 
set(gca,'Units','normalized',... %# Set some axes properties 
     'Position',[0 0 1 1],... 
     'Visible','off'); 
set(gcf,'Units','pixels',...  %# Set some figure properties 
     'Position',[100 100 size(img,2) size(img,1)]); 
print(gcf,'new_image.eps','-depsc2','-r300'); %# Print the figure 

तुम भी this documentation पर एक नज़र डालें कैसे को देखने के लिए कर सकते हैं एक प्रदर्शन के बिना मुद्रण काम करता है।

+1

रिज़ॉल्यूशन परिवर्तन से बचने के लिए आप शायद मैट्रिक्स आकार प्राप्त कर सकते हैं और अक्ष आकार को पिक्सेल में निर्दिष्ट कर सकते हैं। – yuk

+0

बेहतर इसे '-depsc2' – AVB

+0

@AB बनाते हैं: यह विकल्प ओपी तक है, किस प्रकार की .eps फ़ाइल वे चाहते हैं/आवश्यकता के आधार पर। – gnovice

0

इसे इमराइट का उपयोग करके काम करना चाहिए। यद्यपि काम करने के लिए आपको इसके लिए एक रंगरूप जोड़ना होगा।

हालांकि, सहायता पृष्ठों को देखते हुए मुझे लगता है कि ईपीएस फ़ाइल लिखने के लिए इमराइट का उपयोग करना संभव नहीं है।

+0

उदाहरण, कृपया? – Tim

0

निम्नलिखित कोड आपको पीएनजी फ़ाइल को ईपीएस में परिवर्तित करने में मदद कर सकता है।

fileName = 'FarmerStats'; % your FILE NAME as string 

A = imread(fileName,'png'); 
set(gcf,'visible','off') %suppress figure 
image(A);     
axis image    % resolution based on image 
axis off     % avoid printing axis 
set(gca,'LooseInset',get(gca,'TightInset')); % removing extra white space in figure 
saveas(gcf,fileName,'epsc'); % save as COLOR eps file