{"id":2754,"date":"2012-03-09T16:38:09","date_gmt":"2012-03-09T15:38:09","guid":{"rendered":"http:\/\/www.iprog.it\/blog\/?p=2754"},"modified":"2012-06-05T17:04:05","modified_gmt":"2012-06-05T16:04:05","slug":"camera-rullino-fotografico-e-framework-uiimagepickercontroller","status":"publish","type":"post","link":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/","title":{"rendered":"Camera, Rullino fotografico e frameworks"},"content":{"rendered":"<p>L&#8217;interfaccia utente dell&#8217;applicazione per questo tutorial consister\u00e0 in una <strong>image view<\/strong> e due pulsanti. Quando saranno premuti dall&#8217;utente, il primo pulsante mostrer\u00e0 la <strong>camera<\/strong> e quindi l&#8217;utente sar\u00e0 in grado di scattare una foto e incorporarla nella image view. Il secondo pulsante consentir\u00e0 l&#8217;accesso al <strong>rullino fotografico<\/strong> dove l&#8217;utente potr\u00e0 selezionare una foto esistente. Nel caso di foto scattate queste saranno <strong>salvate<\/strong> nel <strong>rullino<\/strong>.<\/p>\n<p>Lanciamo Xcode e creiamo un nuovo progetto di tipo Single-View Application.<\/p>\n<p>L&#8217;applicazione che svilupperemo si basa sul framework <em>MobileCoreService<\/em>. Questo framwork deve essere aggiunto al progetto selezionandolo tra la lista di quelli esistenti. (Ecco la gioca su come fare).<\/p>\n<p>La classe <em>UIImagePickerControlller<\/em> richiede un delegate per essere dichiarato, in aggiunta avremo bisogno di un outlet che consentir\u00e0 l&#8217;accesso all&#8217;oggetto UIImageView nell&#8217;interfaccia utente dove le immagini verranno mostrate. Abbiamo, inoltre, bisogno di dichiarare due metodiche saranno chiamati e un flag booleano per indicare se l&#8217;immagine \u00e8 stata salvata o no. Quindi per finire importiamo il framework. Ecco il risultato finale del file ViewController.h:<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]#import &lt;UIKit\/UIKit.h&gt;<br \/>\n#import &lt;MobileCoreServices\/MobileCoreServices.h&gt;<br \/>\n@interface ViewController : UIViewController{<br \/>\nUIImageView *imageView;<br \/>\nBOOL newMedia;<br \/>\n}<br \/>\n@property (strong, nonatomic) IBOutlet UIImageView *imageView;<br \/>\n &#8211; (IBAction)useCamera;<br \/>\n &#8211; (IBAction)useCameraRoll;<br \/>\n@end[\/code]<\/p>\n<p>Il prossimo passo \u00e8 il disegno dell&#8217;interfaccia. \u00c8 un&#8217;interfaccia molto semplice, non dovremo fare altro che aprire il file ViewController.xib e trasportare tutti i componenti nella view.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" title=\"rullinoView.png\" src=\"http:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/rullinoView.png\" alt=\"rullino foto\" width=\"357\" height=\"517\" border=\"0\" \/><\/p>\n<p>Adesso, Ctrl-Click sul File&#8217;s Owner e collegare tutti gli outlet e le azioni.<\/p>\n<h3>L&#8217;implementazione dei metodi<\/h3>\n<p>Le azioni <strong>useCamera<\/strong> e <strong>useCameraRoll<\/strong> adesso devono essere implementate. Il metodo useCamera ha prima di tutto bisogno di controllare che il dispositivo su cui l&#8217;applicazione sta girando ha una camera. Crea e alloca un&#8217;istanza <strong>UIImagePickerController<\/strong> ed assegna se stesso come delegate. Siccome non abbiamo in programma di gestire i video impostiamo un filtro per selezionare solo le immagini. Finalmente possiamo mostrare il controller. Come ultima cosa impostiamo il flag <em>newMedia<\/em> a <strong>YES<\/strong> in modo da indicare che se viene scattata una foto questa viene comunque salvata nel rullino.<\/p>\n<p>Ecco il codice:<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]#import \u201cViewController.h\u201d<\/p>\n<p>@implementation ViewController;<br \/>\n@synthesize imageView;<br \/>\n.<br \/>\n.<br \/>\n&#8211; (void) useCamera<br \/>\n{<br \/>\n    if ([UIImagePickerController isSourceTypeAvailable:<br \/>\n           UIImagePickerControllerSourceTypeCamera])<br \/>\n    {<br \/>\n           UIImagePickerController *imagePicker =<br \/>\n             [[UIImagePickerController alloc] init];<br \/>\n           imagePicker.delegate = self;<br \/>\n           imagePicker.sourceType =<br \/>\n             UIImagePickerControllerSourceTypeCamera;<br \/>\n           imagePicker.mediaTypes = [NSArray arrayWithObjects:<br \/>\n             (NSString *) kUTTypeImage,<br \/>\n             nil];<br \/>\n           imagePicker.allowsEditing = NO;<br \/>\n           [self presentModalViewController:imagePicker<br \/>\n             animated:YES];<br \/>\n           newMedia = YES;<br \/>\n     }<br \/>\n}<br \/>\n.<br \/>\n.<br \/>\n@end[\/code]<\/p>\n<p>Usare il metodo useCameraRoll \u00e8 molto simile al metodo precedente con l&#8217;eccezione che la sorgente \u00e8 <em>UIImagePickerControllerSourceTypePhotoLibrary <\/em>e <em>newMedia <\/em>viene settato a <strong>NO <\/strong>poich\u00e9 non abbiamo necessit\u00e0 di salvare una foto che gi\u00e0 abbiamo.<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]- (void) useCameraRoll<br \/>\n{<br \/>\n    if ([UIImagePickerController isSourceTypeAvailable:<br \/>\n          UIImagePickerControllerSourceTypeSavedPhotosAlbum])<br \/>\n    {<br \/>\n       UIImagePickerController *imagePicker =<br \/>\n           [[UIImagePickerController alloc] init];<br \/>\n       imagePicker.delegate = self;<br \/>\n       imagePicker.sourceType =<br \/>\n           UIImagePickerControllerSourceTypePhotoLibrary;<br \/>\n       imagePicker.mediaTypes = [NSArray arrayWithObjects:<br \/>\n           (NSString *) kUTTypeImage,<br \/>\n           nil];<br \/>\n       imagePicker.allowsEditing = NO;<br \/>\n       [self presentModalViewController:imagePicker animated:YES];<br \/>\n        newMedia = NO;<br \/>\n    }<br \/>\n}[\/code]<\/p>\n<h3>Scriviamo i delegate<\/h3>\n<p>Come gi\u00e0 descritto per implementare completamente l&#8217;image picker dobbiamo scrivere i metodi che controllano i delegate. Il pi\u00f9 importante \u00e8 il metodo <em>didFinishPickingMediaWithInfo <\/em>il quale \u00e8 richiamato quando l&#8217;utente ha terminato di scattare o selezionare un&#8217;immagine.<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]-(void)imagePickerController:(UIImagePickerController *)picker<br \/>\ndidFinishPickingMediaWithInfo:(NSDictionary *)info<br \/>\n{<br \/>\n   NSString *mediaType = [info<br \/>\n    objectForKey:UIImagePickerControllerMediaType];<br \/>\n   [self dismissModalViewControllerAnimated:YES];<br \/>\n   if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {<br \/>\n        UIImage *image = [info<br \/>\n          objectForKey:UIImagePickerControllerOriginalImage];<\/p>\n<p>        imageView.image = image;<br \/>\n        if (newMedia)<br \/>\n            UIImageWriteToSavedPhotosAlbum(image,<br \/>\n               self,<br \/>\n               @selector(image:finishedSavingWithError:contextInfo:),<br \/>\n               nil);<br \/>\n        }<br \/>\n        else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])<br \/>\n        {<br \/>\n\t\t\/\/ qui andrebbe il codice se volessimo supportare i video<br \/>\n\t}<br \/>\n}<br \/>\n-(void)image:(UIImage *)image<br \/>\nfinishedSavingWithError:(NSError *)error<br \/>\ncontextInfo:(void *)contextInfo<br \/>\n{<br \/>\n   if (error) {<br \/>\n        UIAlertView *alert = [[UIAlertView alloc]<br \/>\n           initWithTitle: @\\&quot;Salvataggio fallito\\&quot;<br \/>\n           message: @\\&quot;Fallito nel tentativo di salvare la foto.\\&quot;<br \/>\n           delegate: nil<br \/>\n           cancelButtonTitle:@\\&quot;OK\\&quot;<br \/>\n           otherButtonTitles:nil];<br \/>\n        [alert show];<br \/>\n   }<br \/>\n}[\/code]<\/p>\n<p>Il codice in questo metodo chiude il picker ed identifica il tipo di media passato dal picker controller. Abbiamo inoltre aggiunto un metodo alla fine in moda da mostrarci un AlertView in caso fallisse il salvataggio.<\/p>\n<p>Se per\u00f2 l&#8217;utente annulla il picker, lo chiudiamo richiamando questo altro delegate.<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker<br \/>\n{<br \/>\n   [self dismissModalViewControllerAnimated:YES];<br \/>\n}[\/code]<\/p>\n<p>Ricordiamoci sempre di svuotare la memoria allocata, ovviamente se abbiamo scelto ARC questo non \u00e8 necessario.<\/p>\n<p>[code lang=&#8221;obj-c&#8221;]- (void)viewDidUnload {<br \/>\n        \/\/ Release any retained subviews of the main view.<br \/>\n        \/\/ e.g. self.myOutlet = nil;<br \/>\n        self.imageView = nil;<br \/>\n}[\/code]<\/p>\n<p>Abbiamo terminato. Ti consiglio di provare l&#8217;applicazione sul dispositivo in modo da provare anche la camera.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;interfaccia utente dell&#8217;applicazione per questo tutorial consister\u00e0 in una image view e due pulsanti. Quando saranno premuti dall&#8217;utente, il primo pulsante mostrer\u00e0 la camera e quindi l&#8217;utente sar\u00e0 in grado di scattare una foto e incorporarla nella image view. Il secondo pulsante consentir\u00e0 l&#8217;accesso al rullino fotografico dove l&#8217;utente potr\u00e0&#8230; <a href=\"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":5,"featured_media":2757,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[36,1137,1140,1139,1142,1141,1143,1138],"class_list":["post-2754","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-objective-c-ios","tag-applicazione","tag-camera","tag-foto","tag-fotografico","tag-framework","tag-immagini","tag-interfaccia-utente","tag-rullino"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Camera, Rullino fotografico e frameworks - iProg<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Camera, Rullino fotografico e frameworks - iProg\" \/>\n<meta name=\"twitter:description\" content=\"L&#8217;interfaccia utente dell&#8217;applicazione per questo tutorial consister\u00e0 in una image view e due pulsanti. Quando saranno premuti dall&#8217;utente, il primo pulsante mostrer\u00e0 la camera e quindi l&#8217;utente sar\u00e0 in grado di scattare una foto e incorporarla nella image view. Il secondo pulsante consentir\u00e0 l&#8217;accesso al rullino fotografico dove l&#8217;utente potr\u00e0... Read more &raquo;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@iprogblog\" \/>\n<meta name=\"twitter:site\" content=\"@iprogblog\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/\"},\"author\":{\"name\":\"Fabio\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/5f7d1474b2b5e8fe635f84906efc8c51\"},\"headline\":\"Camera, Rullino fotografico e frameworks\",\"datePublished\":\"2012-03-09T15:38:09+00:00\",\"dateModified\":\"2012-06-05T16:04:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/\"},\"wordCount\":732,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/ImageIphone_ios_5_camera_app.jpeg\",\"keywords\":[\"applicazione\",\"camera\",\"foto\",\"fotografico\",\"framework\",\"immagini\",\"interfaccia utente\",\"rullino\"],\"articleSection\":[\"Objective-C iOS\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/\",\"name\":\"Camera, Rullino fotografico e frameworks - iProg\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/ImageIphone_ios_5_camera_app.jpeg\",\"datePublished\":\"2012-03-09T15:38:09+00:00\",\"dateModified\":\"2012-06-05T16:04:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/5f7d1474b2b5e8fe635f84906efc8c51\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/objective-c-ios\\\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/ImageIphone_ios_5_camera_app.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/ImageIphone_ios_5_camera_app.jpeg\",\"width\":\"640\",\"height\":\"960\",\"caption\":\"camera roll iphone app\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/\",\"name\":\"iProg\",\"description\":\"perch\u00e9 reinventare la ruota?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/#\\\/schema\\\/person\\\/5f7d1474b2b5e8fe635f84906efc8c51\",\"name\":\"Fabio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g\",\"caption\":\"Fabio\"},\"description\":\"Esperienza nella progettazione e sviluppo di Applicazioni mobili. Integro le conoscenze acquisite in ambito accademico con un continuo studio di nuove tecnologie che mi permettano di creare applicazioni sempre pi\u00f9 affidabili sicure ed efficienti. Venite a trovarmi sul blog Fabiosoft Google+\",\"sameAs\":[\"http:\\\/\\\/www.fabiosoft.com\",\"https:\\\/\\\/www.facebook.com\\\/devfabionisci\\\/\",\"http:\\\/\\\/it.linkedin.com\\\/in\\\/fabionisci\"],\"url\":\"https:\\\/\\\/www.iprog.it\\\/blog\\\/author\\\/fabiosoft\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Camera, Rullino fotografico e frameworks - iProg","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/","twitter_card":"summary_large_image","twitter_title":"Camera, Rullino fotografico e frameworks - iProg","twitter_description":"L&#8217;interfaccia utente dell&#8217;applicazione per questo tutorial consister\u00e0 in una image view e due pulsanti. Quando saranno premuti dall&#8217;utente, il primo pulsante mostrer\u00e0 la camera e quindi l&#8217;utente sar\u00e0 in grado di scattare una foto e incorporarla nella image view. Il secondo pulsante consentir\u00e0 l&#8217;accesso al rullino fotografico dove l&#8217;utente potr\u00e0... Read more &raquo;","twitter_image":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg","twitter_creator":"@iprogblog","twitter_site":"@iprogblog","twitter_misc":{"Scritto da":"Fabio","Tempo di lettura stimato":"4 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#article","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/"},"author":{"name":"Fabio","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/5f7d1474b2b5e8fe635f84906efc8c51"},"headline":"Camera, Rullino fotografico e frameworks","datePublished":"2012-03-09T15:38:09+00:00","dateModified":"2012-06-05T16:04:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/"},"wordCount":732,"commentCount":0,"image":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg","keywords":["applicazione","camera","foto","fotografico","framework","immagini","interfaccia utente","rullino"],"articleSection":["Objective-C iOS"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/","url":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/","name":"Camera, Rullino fotografico e frameworks - iProg","isPartOf":{"@id":"https:\/\/www.iprog.it\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#primaryimage"},"image":{"@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg","datePublished":"2012-03-09T15:38:09+00:00","dateModified":"2012-06-05T16:04:05+00:00","author":{"@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/5f7d1474b2b5e8fe635f84906efc8c51"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.iprog.it\/blog\/objective-c-ios\/camera-rullino-fotografico-e-framework-uiimagepickercontroller\/#primaryimage","url":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg","contentUrl":"https:\/\/www.iprog.it\/blog\/wp-content\/uploads\/2012\/03\/ImageIphone_ios_5_camera_app.jpeg","width":"640","height":"960","caption":"camera roll iphone app"},{"@type":"WebSite","@id":"https:\/\/www.iprog.it\/blog\/#website","url":"https:\/\/www.iprog.it\/blog\/","name":"iProg","description":"perch\u00e9 reinventare la ruota?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iprog.it\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.iprog.it\/blog\/#\/schema\/person\/5f7d1474b2b5e8fe635f84906efc8c51","name":"Fabio","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/03f928dca7330002301d292e5dc1b2fca35722d24a0628eaf129fd52acfc0a99?s=96&r=g","caption":"Fabio"},"description":"Esperienza nella progettazione e sviluppo di Applicazioni mobili. Integro le conoscenze acquisite in ambito accademico con un continuo studio di nuove tecnologie che mi permettano di creare applicazioni sempre pi\u00f9 affidabili sicure ed efficienti. Venite a trovarmi sul blog Fabiosoft Google+","sameAs":["http:\/\/www.fabiosoft.com","https:\/\/www.facebook.com\/devfabionisci\/","http:\/\/it.linkedin.com\/in\/fabionisci"],"url":"https:\/\/www.iprog.it\/blog\/author\/fabiosoft\/"}]}},"views":3633,"_links":{"self":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/2754","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/comments?post=2754"}],"version-history":[{"count":0,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/posts\/2754\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media\/2757"}],"wp:attachment":[{"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/media?parent=2754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/categories?post=2754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iprog.it\/blog\/wp-json\/wp\/v2\/tags?post=2754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}