2010-11-19 17 views
12

पर बनाए गए ग्राफ़िक को कैसे सहेजना है, मैं अपने एप्लिकेशन में अलग-अलग ग्राफ खींचने के लिए कोरप्लॉट का उपयोग कर रहा हूं। फिर, मैं इस ग्राफ को एक jpg फ़ाइल में सहेजना चाहता हूं और कुछ सोशल नेटवर्किंग साइट (उदा।, ट्विटर) पर प्रकाशित करना चाहता हूं।कोरप्लॉट द्वारा जेपीजी फ़ाइल

मैं कुछ प्रलेखन पढ़ने किया था और समझा जाता है कि निम्न विधियों में मेरे लिए उपयोगी हो सकता है:

  • CGBitmapContextCreateImage: एक CGImage एक बिटमैप ग्राफिक्स संदर्भ से एक प्रति के रूप में बनाने (यानी, दृश्य, जहां मेरे ग्राफ है स्थित या पूरे स्क्रीन - मैं सही समझा है)

  • CGImageCreateWithImageInRect: मैं छवि का कुछ हिस्सा बाहर क्लिप कर सकते हैं, यदि आवश्यक

  • [UIImage imageWithCGImage? ]: एक UIImage ऑब्जेक्ट के लिए CGImage परिवर्तित

  • UIImageJPEGRepresentation: एक जेपीजी NSData वस्तु के लिए अपने UIImage वस्तु परिवर्तित जो तब मैं अपने सामाजिक नेटवर्क के लिए साझा कर सकते हैं

    1. पहला सवाल है: क्या मैं सही समझ लिया है संचालन का अनुक्रम मुझे अपने काम को पूरा करने के लिए करना है? मैं इसे बाहर अपने आप कोशिश करते हैं, लेकिन मैं एक समस्या जो दूसरा सवाल की ओर जाता है मिल गया है:

    2. जहाँ मैं ग्राफिक्स संदर्भ की जानकारी अगर मैं CorePlot उपयोग कर रहा हूँ CGBitmapContextCreateImage में पारित करने के लिए मिलता है से? क्षमा करें अगर यह एक बेवकूफ सवाल है, लेकिन मैं वास्तव में ग्राफिक्स संदर्भों के साथ घर पर नहीं हूँ।

धन्यवाद अग्रिम में किसी भी मदद के लिए बहुत कुछ! और अगर मैं इन सब के साथ कहीं मिलता हूं तो मैं यहां अपना कोड नमूना पोस्ट करने का वादा करता हूं।

खैर, ब्रैड करने के लिए धन्यवाद, यह वास्तव में आसान था, लेकिन जैसा कि मैंने promissed, मैं लाइनों पोस्ट करने के लिए है:

CPXYGraph *graph=[[CPXYGraph alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; 

// setting up the graph 
// ... 

UIImage *newImage=[graph imageOfLayer]; 
NSData *newPNG=UIImagePNGRepresentation(newImage); // or you can use JPG or PDF 

// For test purposes I write the file to the Documents directory, but you can do whatever you want with your new .png file 
NSString *filePath=[NSString stringWithFormat:@"%@/graph.png", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]]; 

if([newPNG writeToFile:filePath atomically:YES]) 
    NSLog(@"Created new file successfully"); 
+1

एक साइड नोट के रूप में, क्या आपने jpg के बजाय पीएनजी माना है? कंप्यूटर उत्पन्न ग्राफिक्स के लिए यह चार्ट बेहतर हो सकता है। – ustun

उत्तर

20

वास्तव में, CPLayer आधार कोर प्लॉट में सभी ड्राइंग तत्वों के लिए इस्तेमाल किया वर्ग -imageOfLayer कहा जाता है एक वर्ग विधि इस बात का एक UIImage उदाहरण देता है जो भी परत आप इसे कहते हैं। यदि आप देखना चाहते हैं कि यह कैसे पूरा किया जाता है तो फ्रेमवर्क में CPPlatformSpecificCategories.h और CPPlatformSpecificCategories.m फ़ाइलें देखें।

बस अपने CPGraph उदाहरण पर -imageOfLayer का उपयोग करें और फिर उस छवि का जेपीईजी संस्करण बनाने के लिए UIImageJPEGRepresentation() का उपयोग करें। फिर आप उस सामान्य छवि का उपयोग कर उस छवि को अपलोड कर सकते हैं।

इसी तरह, -dataForPDFRepresentationOfLayer विधि है जो एक एनएसडीएटा उदाहरण देता है जिसमें परत और उसके उपन्यासों का पीडीएफ प्रतिनिधित्व होता है।

+0

हाँ !!! बस इतना आसान था, धन्यवाद! – Arts

+0

HI .. क्या यह संभव संपूर्ण ग्राफ छवि है .. मुझे केवल 320 एक्स 460 मिल गया .. दृश्यमान ग्राफ छवि .. मुझे पूर्ण ग्राफ छवि चाहिए ..? मैं इसे कैसे प्राप्त कर सकता हूँ...? –

2

मैं CorePlot के बारे में ज्यादा नहीं जानता। लेकिन मुझे लगता है कि कोरप्लॉट एक ऐसा दृश्य प्रदान करता है जो एक ग्राफ को स्वयं प्रस्तुत करता है। यदि कोरप्लॉट ग्राफ़ के UIImage प्राप्त करने के लिए कोई तंत्र प्रदान नहीं करता है, तो आप शायद कोरप्लॉट को अपने स्वयं के बिटमैप ग्राफिक्स संदर्भ में चित्रित करने के लिए चालित कर सकते हैं, जिससे आप सहेजने के लिए एक छवि ऑब्जेक्ट बना सकते हैं।

1) UIGraphicsBeginImageContext() का उपयोग कर एक बिटमैप ग्राफिक्स संदर्भ बनाने के लिए:

यहाँ बुनियादी दृष्टिकोण है। यह संदर्भ को "वर्तमान" संदर्भ भी बना देगा। आप CGBitmapContextCreate() का भी उपयोग कर सकते हैं लेकिन फिर आपको इसे चालू करने के लिए UIGraphicsPushContext() का उपयोग करना होगा।

2) कोरप्लॉट व्यू की drawRect: विधि को कॉल करें।

3) UIGraphicsGetImageFromCurrentImageContext()

4 का उपयोग कर ग्राफिक्स संदर्भ से छवि प्राप्त) UIGraphicsEndImageContext()

5 के साथ साफ) UIImageJPEGRepresentation() का उपयोग कर एक NSData वस्तु में अपने Jpeg बिट्स मिलता है।

6) को बचाने के/अपने jpeg NSData तरीकों का उपयोग कर अपलोड (या अन्य ..)

संबंधित मुद्दे