2010-01-10 11 views
71

मैं NSBundle & DocumentDirectory डेटा पता लगाना परेशानी हो रही है, मैं एक कैमरा चित्र "imageView" है कि मैं NSDocumentDirectoy लिए बचत कर रहा हूँ और उसके बाद के लिए संलग्न के लिए इसे पुनः प्राप्त करना चाहते हैं एक ई-मेल,बचत छवि और ईमेल संलग्नक के लिए पुन: प्राप्त करने

यहाँ बचत कोड:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
    NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease]; 
    [picker addAttachmentData:myData mimeType:@"image/png" fileName:@"savedImage"]; 
:

- (IBAction)saveImage { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
    UIImage *image = imageView.image; // imageView is my image from camera 
    NSData *imageData = UIImagePNGRepresentation(image); 
    [imageData writeToFile:savedImagePath atomically:NO]; 
} 

यहाँ नए हो रही डेटा कोड है

+1

क्या आप मुझे बता सकते हैं कि कैमरे की छवि को पहली जगह में कैसे मिला? यानी यूआईएममेज का संदर्भ जो आपने कैमरे के साथ लिया था। धन्यवाद। – Remover

+0

स्विफ्ट में छवि को सहेजें और प्राप्त करें: https://iosdevcenters.blogspot.com/2016/04/save-and-get-image-from-document.html –

+0

जहां सेवमेंट एक्शन को कॉल करना है। मैं एक्सकोड पर नया हूँ। – NovusMobile

उत्तर

66
- (IBAction)getImage { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 
} 

यह आरंभ करना चाहिए!

+0

धन्यवाद, यह है बेन के उत्तर से अलग लेकिन ईमेल अटैचमेंट को एनएसडीटा को जोड़ने की ज़रूरत है, मुझे आपके जवाब में कुछ याद आना चाहिए। मैं "img: ईमेल पर नामित कैसे करूं? धन्यवाद –

+0

[पिकर एडएटैचमेंटडाटा: myData mimeType: @" image/png "fileName: @" icon "]; उपरोक्त" डेटा "छवि का nsdata प्रतिनिधित्व है।" पिकर "ईमेल घटक है। यह पहले ही संलग्न है। – Jordan

+0

अब काम कर रहा है धन्यवाद ... –

0

क्योंकि प्रत्येक आईफोन ऐप अपने स्वयं के सैंडबॉक्स में है, इसलिए आपके पास डिवाइस-व्यापी दस्तावेज़ फ़ोल्डर तक पहुंच नहीं है। किसी ईमेल को एक छवि संलग्न करने के लिए, छवि को अपने दस्तावेज़ फ़ोल्डर में सहेजें। अपने स्थानीय दस्तावेज़ फ़ोल्डर प्राप्त करने के लिए [@ "~/दस्तावेज़" स्ट्रिंगबीएक्सपैंडिंग टिल्डेइनपैथ] का उपयोग करने का प्रयास करें - जो मेरे लिए काम करता है। ऐसा लगता है कि आप जिस छवि का उपयोग कर रहे हैं वह छवि को ईमेल से जोड़ने के लिए सही है।

आशा है कि मदद करता है,

+0

मुझे ";" से पहले एक त्रुटि की उम्मीद है ";" इस लाइन पर: \t एनएसएसटींग * पथ = [[@ "~ दस्तावेज़"] पथफॉर संसाधन: @ "छवि" टाइप प्रकार: @ "पीएनजी"]; \t कोई विचार? आप दोनों की मदद के लिए धन्यवाद। –

+0

"stringByExpandingTildeInPath" भाग जोड़ने के लिए याद रखें। (और इसे "~ दस्तावेज़" होना चाहिए, न कि "~ दस्तावेज़"। StringByExpandingTildeInPath एनएसएसटींग का एक तरीका है जो स्वचालित रूप से ~ उपयोगकर्ता के होम फ़ोल्डर के पथ के साथ ~ –

+1

कार्य कर रहा है धन्यवाद ... –

0

प्रयास करें यह एक:

-(void)setProfilePic 
{ 
    NSArray *docpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [docpaths objectAtIndex:0]; 
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.png"]; 

    NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imagePath]]; 
    UIImage *thumbNail = [[UIImage alloc] initWithData:imgData]; 
    [profilePic_btn setBackgroundImage:thumbNail forState:UIControlStateNormal]; 
} 
5

स्विफ्ट 3

// Create a URL 
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first 
let imageURL = documentsURL?.appendingPathComponent("MyImageName.png") 

// save image to URL 
let myImage = imageView.image! // or wherever you have your UIImage 

do { 
    try UIImagePNGRepresentation(myImage)?.write(to: imageURL!) 
} catch {} 


// Use the URL to retrieve the image for sharing to email, social media, etc. 
// docController.URL = imageURL 
// ... 

मैं संक्षिप्तता के लिए optionals के कुछ unwrapped बाध्य करते हैं। अपने कोड में guard या if let का उपयोग करें।

+0

वास्तव में दो उपलब्ध मामले हैं- '। दस्तावेज़ीकरण निर्देशिका' और '.documentDirectory', जो एक ही चीज़ नहीं हैं।प्रश्न दस्तावेज़ निर्देशिका के बारे में था, इसलिए मुझे लगता है कि आपने कोड समापन सुझावों से गलत मूल्य चुना है;) – alexburtnik

+0

@alexburtnik, आह, हाँ, शायद। आपकी व्याख्या के लिए धन्यवाद (और मेरी गलती को ठीक करने के लिए)। – Suragch

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