• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#007 – Sfruttiamo la fotocamera dell’iPhone

By Redazione | on 12 Novembre 2009 | 15 Comments
Senza categoria

t007IS Con questo tutorial vedremo come sfruttare la fotocamera dell’iPhone, e le classi inerenti offerte da Apple, per prelevare una foto dal Rullino Fotografico, dalla libreria di foto o direttamente acquisendola con un nuovo scatto, per poterla poi utilizzare nella nostra applicazione come meglio crediamo. Apriamo Xcode, selezioniamo “View-based Application” dall’elenco dei template disponibili e proseguiamo. Scegliamo nome (ad esempio myPhoto) e posizione dove salvare il nostro progetto e andiamo avanti. Apriamo “myPhotoViewController.h” e impostiamo i due protocolli “UIImagePickerControllerDelegate, UINavigationControllerDelegate”. Dichiariamo un oggetto di tipo UIImageView e chiamiamolo imageView, dichiariamo infine i 3 metodi che ci permetteranno di eseguire le nostre scelte all’interno dell’applicazione. Il codice del file di interfaccia dovrebbe essere come segue:

#import 

@interface myPhotoViewController : UIViewController  {
	IBOutlet UIImageView *imageView;
}

- (void)acquisisciFoto:(id)sender;
- (void)rullinoFotografico:(id)sender;
- (void)photoAlbum:(id)sender;

@end

Apriamo Interface Builder facendo doppio click sul file “myPhotoViewController.xib” e disegnamo la nostra interfaccia grafica. Inserite un UIImageView e 3 UIButton e modifichiamo le loro proprietà in modo da ottenere una vista simile a quella rappresentata in figura qui sotto:


t007IB

Per una corretta visualizzazione delle immagini durante l’esecuzione, settiamo l’attributo “Mode” della UIImageView in modalità “Aspect Fit”. Colleghiamo quindi gli oggetti appena creati con quelli dichiarati da codice. UIImageView con imageView e i 3 pulsanti con i rispettivi metodi. Ricordate di scegliere l’opzione “Touch Up Inside” per gli UIButton.


t007_ImageProp

Possiamo salvare, chiudere IB e tornare ad Xcode. Apriamo il file di implementazione “myPhotoViewController.m” e scriviamo il codice dei metodi dichiarati precedentemente:

- (void)acquisisciFoto:(id)sender{
	UIImagePickerController *picker = [[UIImagePickerController alloc] init];
	[picker setDelegate:self];
	[picker setAllowsEditing:YES];
	picker.sourceType = UIImagePickerControllerSourceTypeCamera;
	[self presentModalViewController:picker animated:YES];
	[picker release];
}

- (void)rullinoFotografico:(id)sender{
	UIImagePickerController *picker = [[UIImagePickerController alloc] init];
	[picker setDelegate:self];
	[picker setAllowsEditing:YES];
	picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
	[self presentModalViewController:picker animated:(YES)];
	[picker release];
}

- (void)photoAlbum:(id)sender{
	UIImagePickerController *picker = [[UIImagePickerController alloc] init];
	[picker setDelegate:self];
	[picker setAllowsEditing:YES];
	picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
	[self presentModalViewController:picker animated:(YES)];
	[picker release];	
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
	[imageView setImage:image];
	[picker dismissModalViewControllerAnimated:YES];
}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
	[picker dismissModalViewControllerAnimated:YES];
}

I primi 3 metodi sono praticamente identici, non facciamo altro che creare un oggetto di tipoUIImagePickerController, settare il suo delegato a self, impostare il suo metodo “AllowsEditing” a YES e decidere da dove deve essere prelevata la foto. Proprio qui troviamo l’unica differenza dei tre metodi. Useremo infatti “UIImagePickerControllerSourceTypeCamera” per avviare la fotocamera pronta a scattare una nuova foto, “UIImagePickerControllerSourceTypeSavedPhotosAlbum” per scegliere una fotografia dal Rullino Fotografico o “UIImagePickerControllerSourceTypePhotoLibrary” per sceglierla dal Photo Album. Avviamo quindi il “ModalViewController” e rilasciamo l’oggetto.

Gli ultimi due metodi servono per impostare la foto e nascondere il ModalViewController se abbiamo deciso di importare la foto o, nel caso in cui volessimo annullare l’operazione, di nascondere semplicemente tutto e tornare alla vista senza alcuna immagine importata.

Possiamo a questo punto salvare e testare la nostra applicazione, che su iPhone Simulator, se decidessimo di scattare una foto, si chiuderebbe inaspettatamente non essendo presente una fotocamera da poter utilizzare durante il test. Per provare tutte le funzioni consiglio quindi di installare direttamente l’applicazione sul vostro iPhone.

Ecco un’anteprima dell’applicazione in esecuzione:


t007IS

Video Tutorial

by David Pollak



Share this story:
  • tweet

Tags: fotocameraObjective-cprogrammazioneTutorial PraticiXcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Microservizi per logiche applicative di grandi dimensioni

    27 Luglio 2016 - 0 Comment
  • Con Xcode 6.3 arriva il Crash Log Organizer

    26 Febbraio 2015 - 0 Comment
  • Xcode-project-generator: uno script per creare velocemente progetti Xcode

    21 Ottobre 2014 - 1 Comment

Author Description

15 Responses to “T#007 – Sfruttiamo la fotocamera dell’iPhone”

  1. 15 Novembre 2009

    Carlo

    Come posso integrare uesto codice per realizzare un applicazione che invii e-mail con allegati?

  2. 16 Novembre 2009

    Staff devAPP

    Vuoi inviare le foto, scattate o prelevate dalla libreria, tramite e-mail da questa stessa applicazione? (apri un topic nel forum così la tua richiesta avrà maggiore visibilità anche con gli altri programmatori ;))

  3. 10 Dicembre 2009

    Daniele

    – (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    UIImage * img = [info objectForKey:@”UIImagePickerControllerEditedImage”];
    if((img!=nil) && (imageView !=nil)) {
    [imageView setImage:img];
    }

    }

    così è meglio, quello usato dovrebbe essere deprecato.

    ps: meglio ancora aggiungere un if prima di prendere l’immagine
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    [picker setDelegate:self];
    [picker setAllowsEditing:YES];
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:(YES)];
    [picker release];

    }else{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”No photo library Available” message:@”Requires photo library to take pictures” delegate:nil cancelButtonTitle:@”OK” otherButtonTitles:nil];
    [alert show];
    [alert release];
    }

  4. 25 Marzo 2010

    Francesco

    nella UIImageView non viene visualizzata la foto acquisita del primo metodo “acquisisciFoto”.

    Come mai?
    Il codice è identico a quello postato… senza errori…

  5. 25 Marzo 2010

    Francesco

    Risolto… anzi… ora funziona e non ho modificato nulla!

    mah…

  6. 23 Maggio 2010

    Fabio

    non è possibile salvare l’immagine anche quando chiudo l’app?

  7. 27 Dicembre 2010

    Salvatore

    E come si può usare la realtà aumentata?

  8. 17 Agosto 2011

    Bob

    come posso integrare la camera ad un menu ?Cioe con due progetti diversi come li associo ?

  9. 18 Novembre 2011

    Quadrrato

    Ottimo veramente.
    Tutto molto semplice e chiaro!
    Grazie

  10. 24 Novembre 2011

    momone83

    Non riesco a capire perchè lo stesso codice in iOS4 funziona perfettamente, invece in iOS 5 nel caso del rullino o della libreria va inesorabilmente in crash! Sapete illuminarmi in merito??? Anche perchè il debugger non mostra un errore esplicito e comprensibile! Grazie in anticipo.

  11. 11 Gennaio 2012

    Nicola

    Ciao complimenti per i tutorial molto utili.
    Ora ho da chiedere una cosa, io utilizzo ancora solo il simulatore per verificare il codice sviluppato (perché la mia conoscenza è ancora labile e non mi va di pagare 70$ per verificare che so caricare una foto dal rullino fotografico….).
    Come faccio a caricare le foto sul simulatore come se stessero nel Rullino? e poi come faccio a far utilizzare la webcam del macbook come se fosse dell’iphone del simulatore?

  12. 29 Gennaio 2012

    Giuseppe Frattura

    Ciao ragazzi, vi seguo da molto e trovo i vostri tutorial molto utili.
    Volevo chiedervi se e come fosse possibile modificare le impostazioni dello scatto della foto, ovvero ISO e tempo di apertura.

    Grazie
    Giuseppe Frattura

  13. 14 Febbraio 2012

    Pilodog

    Ciao ragazzi mi chiedo se qualcuno mi possa aiutare a editare un codice x usare la fotocamera x leggere codici qr…..?… In attesa di una vostra risposta vi saluto

  14. 1 Marzo 2012

    P4olo

    Salve a tutti e grazie mille per i bellissimi tutorial,
    sto cercando di utilizzare la fotocamera/photoalbum inserendoli in un alertview.
    Vi spiego meglio il mio problema, ho un alert view dove ho uno spazio per un immaginee uno spazio per il nome , vorrei quindi toccando sull’immagine avviare la fotocare (ad esempio), qui sorge il problema ovvero l’operazione viene eseguita correttamente ma una volta aperta la fotocamere è come se non riconescesse piu’ il touch tutto quindi rimane bloccato e non posso piu’ fare nulla. 🙁

    Nel caso invece dell’album fotografico rimane come illuminato centralmente e se prova a toccare l’applicazione si chiude.
    Ho provato diverse strade ma non riesco a venirne a capo probabilmente non gestisco bene i controller ( anzi quasi sicuramente) vi invio il pezzo di codice dell’alert

    ———————————————————–
    NSString *spazi=@”\n\n\n\n\n”;
    NSString *b=[spazi stringByReplacingOccurrencesOfString:@”\\n” withString:@”\n”];

    popUp1 = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@”INSNOME”, @””)
    message:b delegate:nil cancelButtonTitle:@”OK” otherButtonTitles:nil];

    var2=@”l11″;
    testo = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 120, 245.0, 25.0)];

    [testo setBackgroundColor:[UIColor whiteColor]];
    testo.text=l11.text;
    testo.autocorrectionType = UITextAutocorrectionTypeNo;
    testo.delegate = self;

    btft1 = [UIButton buttonWithType:UIButtonTypeCustom];
    btft1.frame = CGRectMake(110,47, 60, 70); // position in the parent view and set the size of the button
    [btft1 setImage:[UIImage imageNamed:@”sagoma.jpg”] forState:UIControlStateNormal];
    [btft1 addTarget:self action:@selector(mimg) forControlEvents:UIControlEventTouchUpInside];
    btft1.showsTouchWhenHighlighted=YES;

    [popUp1 addSubview:testo]; // inserisco il label precedentemente creato
    [popUp1 addSubview:btft1]; // inserisco il bottone che utilizzo da immagine precedentemente creato
    [popUp1 show];
    [popUp1 release];

    —————————–

    -(IBAction)mimg{

    [popUp1 removeFromSuperview];

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    [picker setDelegate:self];
    [picker setAllowsEditing:YES];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
    }

    Vi ringrazio già per la pazienza
    a presto Ciaoooooooo

  15. 27 Novembre 2012

    Andrea Rossi

    Ragazzi Ciao ho un problema!! Sono alle prime armi e mi da errore qua :

    – (void)acquisisciFoto:(id)sender “” {
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    [picker setDelegate:self];
    [picker setAllowsEditing:YES];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentModalViewController:picker animated:YES];
    [picker release];
    }

    …dove ho messo “” il mio xcode che è l’ultimo e mi dice di inserire il ; ma facendo in questo modo mi da errore!!! COME POSSO FARE????? Vi ringrazio in anticipo (aspetto le vostre risposte)

    grazie mille e buon lavoro a presto ciao!

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO