Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[Çözüldü] Actionları kullanmadan fotoğraf çekme
#1
merhaba, telefondan resim çekmek için paylaşılan bütün örneklerde TakePhotoFromCameraAction kullanılmış. Bu actionı kullandığımızda ekrana kamera uygulamasının kendine has çekme tuşu ve çektikten sonra kaydet tuşu geliyor. Bunları aşmak için action yerine button nesnesinin onclick eventinda kamerayı aç kapa yaptırarak imgCameraView üzerine resmi alıyorum. Buradan da bir image nesnesine alıyorum.Fakat bunu bir türlü galeriye kaydedemiyorum. Windows üzerinde denediğimde belgelerime kayıt ediyor ama telefonda denediğimde hiç bir tepki yok.

mnecmrp.jpg


procedure TForm1.btnFalseClick(Sender: TObject);
begin
 CameraComponent.Active := False;
 Image1.Bitmap.Assign(imgCameraView.Bitmap);
self.imgCameraView.Bitmap.SaveToFile(System.IOUtils.TPath.GetPicturesPath + '/resimadi.jpg');

 end;

procedure TForm1.btnTrueClick(Sender: TObject);
begin
 CameraComponent.Active := True;
end;

procedure TForm1.CameraComponentSampleBufferReady(Sender: TObject;
 const ATime: TMediaTime);
begin
 CameraComponent.SampleBufferToBitmap(imgCameraView.Bitmap, True);

end;
Cevapla
#2
Dosyayı aşağıdaki gibi kaydedin.
imgCameraView.Bitmap.SaveToFile(TPath.Combine(TPath.GetPicturesPath, 'resimadi.jpg'));
yada aşağıdaki dizine kaydedin.
imgCameraView.Bitmap.SaveToFile(TPath.Combine(TPath.GetSharedPicturesPath, 'resimadi.jpg'));
Önemli Not: Dosya sistemine erişim iznini de vermeniz gerekiyor.
Ayrıca;
Project > Options > Application > Entitlement List penceresinden de Secure file sharing özelliğini de etkinleştirin.

   
Begin : = end / 2;
Cevapla
#3
Teşekkürler üstadım ama malesef yine kaydetmedi..
Cevapla
#4
(05-01-2022, Saat: 13:11)CesuR Adlı Kullanıcıdan Alıntı: Teşekkürler üstadım ama malesef yine kaydetmedi..

Sorunun kaynağını tespit etmek adına aşağıdaki adımları uygulayabilir misiniz?
Fotoğrafı imgCameraView bileşenine aktarıp aktarmadığını test etmek amacıyla;
Çalışma anında, Image ve imgCameraView bileşenlerinin size'ına bakabilir misiniz.
Her iki bileşende de sıfırdan büyük bir değer görmelisiniz.
Eğer öyle değilse, sorun tam da bu noktadadır.
Size sıfırdan büyükse o halde kaydetme yönteminde bir sorun var demektir.
Bu durumda, uygulama özelliklerinden dosya erişim izni ve galeriye erişim izni olup olmadığını kontrol edin.
Uygulama özelliklerinde izinler etkin ise kaydedilen dizinde bir soru var demektir.
Begin : = end / 2;
Cevapla
#5
Merhaba.

Kafa karışıklığı oluşmadan TEST için daha basit bir yöntem önereceğim.

Bir TEXT dosyayı fotoğraflar klasörüne kaydetmeyi ve telefondan da browse edip o text dosyanın oraya kaydedilip kaydedilmediğini anlamaya çalışın.

  With TStringList.Create do 
  try 
    text := 'TEST'; 
    savetofile(.....);
  finally 
    free;
  end;

Sonuçta fotoğraf klasörü sadece bir dosya klasörüdür fotoğraf olmazsa kayıt olmaz diye bir kaide yoktur.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
Dediklerinizi denediğimde gördüm ki kayıt ettiği yeri aşağıdaki konummuş. 

Bu bilgisayar\Galaxy S8\Phone\Android\data\com.embarcadero.kamera\files\Pictures

 imgCameraView.Bitmap.SaveToFile(TPath.Combine(TPath.GetPicturesPath, 'kimagecamera.jpg'));
 Image1.Bitmap.SaveToFile(TPath.Combine(TPath.GetPicturesPath, 'kimage.jpg'));

Sorun verdiğim pathin yanlış yer olmasıymış. Aslında bunu RAD CODER arkadaşım verdiği cevapta doğru pathi göstermiş ama gözümden kaçmış Big Grin  Mrmarman üstadımın paylaşmış olduğu TPath ile alınan klasör yollar adlı cevabından doğru path ekledikten sonra düzeldi. İhtiyacı olanlar için aşağıya bırakıyorum. 

Mrmarman ve Rad Codere çok teşekkürler.

Doğru path 


Image1.Bitmap.SaveToFile(TPath.Combine(System.IOUtils.TPath.GetSharedCameraPath, 'kimage.jpg'));


Mrmarmanın paylaşımı.


System.IOUtils.TPath.GetRandomFileName           =33um0af2.6HB
System.IOUtils.TPath.GetTempFileName             =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/tmp/tmp.OvOnGl9931
System.IOUtils.TPath.GetTempPath                 =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/tmp
System.IOUtils.TPath.GetHomePath                 =/data/data/com.embarcadero.HeaderFooterApplication/files
System.IOUtils.TPath.GetDocumentsPath            =/data/data/com.embarcadero.HeaderFooterApplication/files
System.IOUtils.TPath.GetSharedDocumentsPath      =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files
System.IOUtils.TPath.GetLibraryPath              =/data/app-lib/com.embarcadero.HeaderFooterApplication-1
System.IOUtils.TPath.GetCachePath                =/data/data/com.embarcadero.HeaderFooterApplication/cache
System.IOUtils.TPath.GetPublicPath               =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files
System.IOUtils.TPath.GetPicturesPath             =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Pictures
System.IOUtils.TPath.GetSharedPicturesPath       =/storage/emulated/0/Pictures
System.IOUtils.TPath.GetCameraPath               =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/DCIM
System.IOUtils.TPath.GetSharedCameraPath         =/storage/emulated/0/DCIM
System.IOUtils.TPath.GetMusicPath                =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Music
System.IOUtils.TPath.GetSharedMusicPath          =/storage/emulated/0/Music
System.IOUtils.TPath.GetMoviesPath               =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Movies
System.IOUtils.TPath.GetSharedMoviesPath         =/storage/emulated/0/Movies
System.IOUtils.TPath.GetAlarmsPath               =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Alarms
System.IOUtils.TPath.GetSharedAlarmsPath         =/storage/emulated/0/Alarms
System.IOUtils.TPath.GetDownloadsPath            =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Download
System.IOUtils.TPath.GetSharedDownloadsPath      =/storage/emulated/0/Download
System.IOUtils.TPath.GetRingtonesPath            =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Ringtones
System.IOUtils.TPath.GetSharedRingtonesPath      =/storage/emulated/0/Ringtones
Androidapi.IOUtils.GetExternalFilesDir     =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files
Androidapi.IOUtils.GetFilesDir             =/data/data/com.embarcadero.HeaderFooterApplication/files
Androidapi.IOUtils.GetLibraryPath          =/data/app-lib/com.embarcadero.HeaderFooterApplication-1
Androidapi.IOUtils.GetCacheDir             =/data/data/com.embarcadero.HeaderFooterApplication/cache
Androidapi.IOUtils.GetExternalCacheDir     =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/cache
Androidapi.IOUtils.GetExternalCameraDir    =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/DCIM
Androidapi.IOUtils.GetExternalDownloadsDir =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Download
Androidapi.IOUtils.GetExternalMoviesDir    =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Movies
Androidapi.IOUtils.GetExternalMusicDir     =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Music
Androidapi.IOUtils.GetExternalAlarmsDir    =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Alarms
Androidapi.IOUtils.GetExternalRingtonesDir =/storage/emulated/0/Android/data/com.embarcadero.HeaderFooterApplication/files/Ringtones
Androidapi.IOUtils.GetSharedPicturesDir    =/storage/emulated/0/Pictures
Androidapi.IOUtils.GetSharedCameraDir      =/storage/emulated/0/DCIM
Androidapi.IOUtils.GetSharedDownloadsDir   =/storage/emulated/0/Download
Androidapi.IOUtils.GetSharedMoviesDir      =/storage/emulated/0/Movies
Androidapi.IOUtils.GetSharedMusicDir       =/storage/emulated/0/Music
Androidapi.IOUtils.GetSharedAlarmsDir      =/storage/emulated/0/Alarms
Androidapi.IOUtils.GetSharedRingtonesDir   =/storage/emulated/0/Ringtones
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Çözüldü _ Delphi Community Edition SDK ayarları hatası cinarbil 1 507 12-03-2026, Saat: 10:25
Son Yorum: damert6
  Webbrowser Sorunu [ÇÖZÜLDÜ] codder71 7 438 10-02-2026, Saat: 17:04
Son Yorum: codder71
  IOS FCM göndermek? [ÇÖZÜLDÜ] Mr.X 17 3.464 04-12-2024, Saat: 11:33
Son Yorum: shooterman
  Mobilden Pc'ye Fotoğraf/belge kaydı hbulus 1 596 14-09-2024, Saat: 08:02
Son Yorum: mrmarman
  Android 33 api sdk güncelleme [ÇÖZÜLDÜ] codder71 15 4.125 14-07-2024, Saat: 09:11
Son Yorum: RAD Coder



Konuyu Okuyanlar: 1 Ziyaretçi