Ciao a tutti, sto sperimentando la camera, ho realizzato un semplice software che ti scatta la foto e la salva, il problema e sul salvataggio, come faccio a salvare la foto senza sovrascrivere quella precendente?
vi posto il mio codice che non riesco a far funzionare
Quote:
Sub Camera1_PictureTaken (Data() As Byte)
camera1.StartPreview
Dim out As OutputStream
out = File.OpenOutput(File.DirRootExternal, "Camera.jpg", False)
out.WriteBytes(Data, 0, Data.Length)
out.Close
ToastMessageShow("IMMAGINE SALVATA: " & File.Combine(File.DirRootExternal, "Camera.jpg"), True)
btntakepicture.Enabled = True
End Sub
come vedete il file salva come: camera.jpg, ma io vorrei fare in modo che l'immagine salvata venga aggiunta da un numero progressivo permettendo così il salvataggio senza sovrascrivere quelle precedenti, oppure magari aggiunta di una data e l'ora.
Ciao fifidu70
per farti tornare la data o l'ora usa questo codice
Dim v_data As Long
v_data = DateTime.Now
DateTime.Date(v_data) ti torna il giorno
DateTime.Time(v_data) ti torna l'ora
no ho provato ma prova cosi
sostituisci il tuo codice
out = File.OpenOutput(File.DirRootExternal, "Camera.jpg", False)
con
out = File.OpenOutput(File.DirRootExternal, "Camera.jpg" & DateTime.Time(v_data) , False)
dovrebbe funzionarti
Ciao
niente mi da un errore proprio sulla riga
out = File.OpenOutput(File.DirRootExternal, "Camera.jpg" & DateTime.Time(v_data) , False)
ho dichiarato la variabile come mi hai detto tu ma non va.
vedi un pò cosa ti mostra "msgbox(v_data)", senza una piccola modifica dovrebbe darti una cosa del genere "22/01/2012)" e questo non puo funzionare perche ci sono questi caratteri "/".
ciao filippo, intanto grazie per essere intervenuto, il problema rimane sempre quello iniziale, cioè adesso salva con la data e l'ora ma se scatto un'altra foto senza chiudere il programma, mi sovrascrive quella precedentemente salvata ed ho notato che sia la data che l'ora non cambiano se scatto diverse foto, se invece chiudo il programma e lo riapro allora appena scatto la foto in effetti mi salva su altro file senza sovrascivere quello precedentemente, ma non posso scattare più foto con il programma aperto.
Giusto Filippo non avevo considerato al momento della risposta la formattazione della data
e se una volta scattata la foto e aver salvato il file lo stesso appena creato lo copy in una cartella diversa o con un nuovo nome
Ciaoo
Massimo
allora.....io ho risolto in modo diverso, ho inserito un contatore e lo associato alla data ed allora in modo da avere ad ogni scatto un numero progressivo, adesso ho un'altro problema, ma questo problema nasce dall'inizio e non ha a che fare con il salvataggio ma bensi con la camera.
in pratica ho obbligato lo screen orizzontale all'apertura del programma con il classico metodo:
dim p as phone
p.SetScreenOrientation (0)
e fin qui tutto apposto, ma appena vado in debug ed ho il telefono in posizione verticale, la camera non si abilita rimanendo nero lo schermo, mentre se prima di fare il debug se il telefono è in orizzontale allora il programma funziona bene e la camera si abilita, qualcuno sa dirmi perchè?
vi posto il codice:
Code:
Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. End Sub
Sub Globals Dim counter1 AsInt counter1 = counter1 + 1 Dim camera1 As AdvancedCamera Dim panel1 AsPanel Dim timer1 AsTimer Dim timer2 AsTimer Dim Button2 AsButton Dim btnAqua AsButton Dim btnBlackboard AsButton Dim btnMono AsButton Dim btnNegative AsButton Dim btnNegativo AsButton Dim btnPosterize AsButton Dim btnsepia AsButton Dim btnSolarize AsButton Dim BTNTAKE AsButton Dim btnWitheboard AsButton Dim btntakepicture AsButton Dim p AsPhone Dim now AsLong now = DateTime.now Dim img1 AsImageView Dim v_data AsLong v_data = DateTime.now
End Sub
Sub Activity_Create(FirstTime AsBoolean) ' ' Just add a Panel to the layout and save it as Menu ' Activity.LoadLayout("camera") camera1.Initialize(panel1, "camera1") p.SetScreenOrientation (0)
End Sub
' ' A C T I V I T Y - R E S U ME ' Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed AsBoolean) camera1.StopPreview camera1.Release End Sub Sub timer1_Tick
End Sub
Sub timer2_Tick
End Sub Sub Camera1_Ready (Success AsBoolean) If Success Then camera1.StartPreview
Else ToastMessageShow("Cannot open camera.", True) EndIf End Sub
Sub btnAqua_Click camera1.ColourEffect = "AQUA" End Sub Sub btnBlackboard_Click camera1.ColourEffect = "BLACKBOARD" End Sub Sub btnMono_Click camera1.ColourEffect ="MONO" End Sub Sub btnNegative_Click camera1.ColourEffect = "NEGATIVE" End Sub Sub btnNegativo_Click camera1.ColourEffect = "NONE" End Sub Sub btnPosterize_Click camera1.ColourEffect = "POSTERIZE" End Sub
Sub btnsepia_Click camera1.ColourEffect = "SEPIA" End Sub Sub btnSolarize_Click camera1.ColourEffect = "SOLARIZE" End Sub Sub btnWitheboard_Click camera1.ColourEffect = "WHITEBOARD" End Sub Sub Camera1_PictureTaken (Data() AsByte) camera1.StartPreview Dim out AsOutputStream DateTime.DateFormat="dd.MM.yyyy" DateTime.TimeFormat="HH.mm.ss" out = File.OpenOutput(File.DirRootExternal, "Camera_" & DateTime.Date(v_data) & "_" & DateTime.Time(v_data) & counter1 & "_" & ".jpg" , False) out.WriteBytes(Data, 0, Data.Length) out.Close ToastMessageShow("IMMAGINE SALVATA: " & File.Combine(File.DirRootExternal, "Camera_" & DateTime.Date(v_data) & "_" & DateTime.Time(v_data) & counter1 & "_" & ".jpg"), True) btntakepicture.Enabled = True counter1 = counter1 + 1 End Sub Sub btnTakePicture_Click btntakepicture.Enabled = False camera1.TakePicture End Sub
altra cosa...ho creato un pulsante per abilitare direttamente la camera, ho usato il btnNegativo e gli ho messo il camera1.startpreview, perchè a volte funziona e a volte mi da errore proprio su questa linea?