17 Temmuz 2014 Perşembe

Delphi android Kameradan ve galeriden resim çekme ve paylaşma

Merhabalar,

Birazdan bahsedeceğim olay embarcaderonun sitesinde mevcuttur ve bende ilk olarak oradan yararlanmıştım. 1-2 Arkadaşımın tekrar tekrar sorması üzerine türkçe bir yazıda elimizde bulunması açısından birşeyler yazmaya karar verdim.

Projeye başlayalım:

İlk olarak boş bir proje açıyoruz.

Projeye en temel olarak 1 adet TImage ve 1 adet TButton koymanız kafidir. Gerisi süslemeye girer ve maksat ekran güzel gözüksün hemen gerekli objeleri ekleyelim.

Eklenenler:
  ToolBar = ToolBar

  KameraBut = TButton
    Align = alRight
    StyleLookup= 'cameratoolbutton'

  KameraResim = TImage
    Align = alClient

  ActionList1 = TActionList




Objelerin yerleşimleri bitirdiğinizde sıradaki işlemimiz butonumuza bir action tanımlamak ve kısa yoldan nasıl yapılacağını resim ile göstereceğim.


Şuandaki işlemimiz resimleri projemize almak olduğuna göre:
1-) TTakePhotoFromLibraryAction = Galeriden foto alma
2-) TTakePhotoFromCameraAction = Kameradan foto alma

Hangi seçeneği uygulamak isterseniz tıklayınca o action tanımlansın.

Tanımlama işleminden sonra yine Event sekmesinden "Action" eventinin sol tarafındaki "+" artı işaretine tıklayarak genişletiniz.

OnDidFinishTaking eventi içerisine aşağıdaki kodu yazarak kameradan çekilen veya galeriden seçilen resimi TImage nesnemize alıyoruz.

procedure TKameraScreen.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
  KameraResim.Bitmap.Assign(Image);
end;


"Image" nesesi actiondan dönen TBitmap yani seçilen veya çekilen resimdir.

İlk Görünüm:


Resim çekme anı:


 Çekilen resimin TImage içerisine Assign olmuş hali:


Sosyal Paylaşım Butonu:


Tanımlama işleminden sonra yine Event sekmesinden "Action" eventinin sol tarafındaki "+" artı işaretine tıklayarak genişletiniz.

OnBeforeExecute eventi içerisine aşağıdaki kodu yazarak TImage nesnemiz içerisindeki resmi sosyal resim paylaşma eventi ile alıcı uygulamalara gönderiyoruz.


procedure TKameraScreen.ShowShareSheetAction1BeforeExecute(Sender: TObject);
begin
  ShowShareSheetAction1.Bitmap.Assign(KameraResim.Bitmap);
end;