Italian associare l'ora alla foto salvata.

fifiddu70

Well-Known Member
Licensed User
Longtime User
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
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.
 

maxware

Well-Known Member
Licensed User
Longtime User
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
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
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.
 
D

Deleted member 103

Guest
Ciao Filippo,

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 "/".

Cambia il tuo codice così:
B4X:
DateTime.DateFormat="dd.MM.yyyy"
DateTime.TimeFormat="HH.mm.ss"
out = File.OpenOutput(File.DirRootExternal, "Camera_" & DateTime.Date(v_data) & "_" & DateTime.Time(v_data) & ".jpg" , False)

Ciao,
Filippo
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
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.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
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:
B4X:
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 As Int
   counter1 = counter1 + 1
     Dim camera1 As AdvancedCamera
      Dim panel1 As Panel
   Dim timer1 As Timer
   Dim timer2 As Timer
   Dim Button2 As Button
   Dim btnAqua As Button
   Dim btnBlackboard As Button
   Dim btnMono As Button
   Dim btnNegative As Button
   Dim btnNegativo As Button
   Dim btnPosterize As Button
   Dim btnsepia As Button
   Dim btnSolarize As Button
   Dim BTNTAKE As Button
   Dim btnWitheboard As Button
   Dim btntakepicture As Button
   Dim p As Phone
   Dim now As Long
   now = DateTime.now
   Dim img1 As ImageView
   Dim v_data As Long
    v_data = DateTime.now

End Sub

Sub Activity_Create(FirstTime As Boolean)
'
'  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 As Boolean)
    camera1.StopPreview
    camera1.Release
End Sub
Sub timer1_Tick
   
   
End Sub

Sub   timer2_Tick
   
End Sub
Sub Camera1_Ready (Success As Boolean)
   If Success Then
      camera1.StartPreview
      
   Else
      ToastMessageShow("Cannot open camera.", True)
   End If
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() As Byte)
   camera1.StartPreview
   Dim out As OutputStream
   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
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
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?
 
Top