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.

   
not if
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.
not if
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
Rainbow IOS Push Notification yapılandırması- ÇÖZÜLDÜ kadrikaya 40 9.162 29-09-2022, Saat: 15:44
Son Yorum: MirDurmaz
  ios api bilgi çekme gönderme gonulali 6 287 21-09-2022, Saat: 09:43
Son Yorum: gonulali
  Resim Çekme image ekleme gonulali 4 372 20-06-2022, Saat: 15:22
Son Yorum: mcuyan
  Timer Interval değerini verme - Çözüldü Altıner 1 249 31-03-2022, Saat: 22:47
Son Yorum: barutali
  FMX video'nun dosya yolunu çekme skaracan 4 355 09-03-2022, Saat: 20:43
Son Yorum: skaracan



Konuyu Okuyanlar: 1 Ziyaretçi