Resim Üzerine Yazı Ekleme
Resim Üzerine Yazı Ekleme
Selam;
Sayfalarda ve internette aradım ama bulamadım. Mobile uygulamalarda resim üzerinde kullanabileceğimiz bir sürü efekt var parlaklığını v.s. ayarlayabiliyoruz ancak resim üzerine nasıl yazı ekleyip kaydedebiliriz?
Saygılarımla;
Sayfalarda ve internette aradım ama bulamadım. Mobile uygulamalarda resim üzerinde kullanabileceğimiz bir sürü efekt var parlaklığını v.s. ayarlayabiliyoruz ancak resim üzerine nasıl yazı ekleyip kaydedebiliriz?
Saygılarımla;
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Merhaba;
Canvas yapısını kullanarak Image üzerine yazı yazabilirsiniz. Canvas'ı bir tual gibi düşünün. Üzerine başka bir resim çizebilirsiniz, şekilde çizebilirsiniz veya yazı yazabilirsiniz.
Çizim işlemlerinden önce Canvas.BeginScene, çizimden sonra Canvas.EndScene direktiflerini mutlaka kullanın.
Yazı yazmak için de
Image.Bitmap.Canvas.FillText metodunu kullanın.
Kaydetmek için ise bitmap'ın SaveToFile metodunu kullanabilirsiniz.
İyi çalışmalar...
Canvas yapısını kullanarak Image üzerine yazı yazabilirsiniz. Canvas'ı bir tual gibi düşünün. Üzerine başka bir resim çizebilirsiniz, şekilde çizebilirsiniz veya yazı yazabilirsiniz.
Çizim işlemlerinden önce Canvas.BeginScene, çizimden sonra Canvas.EndScene direktiflerini mutlaka kullanın.
Yazı yazmak için de
Image.Bitmap.Canvas.FillText metodunu kullanın.
Kaydetmek için ise bitmap'ın SaveToFile metodunu kullanabilirsiniz.
İyi çalışmalar...
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Merhaba;
Örnek bir proje üzerinde çalışarak, Tüm Platformlar için (Android, iOS, Win ve Mac OS X) "Fotoğraf Üzerine Yazı Yazma ve Kaydetme" uygulamasının linkini formun paket programlar bölümünde paylaştım.
viewtopic.php?f=12&t=35773
Hayırlı olması dileğiyle..
Örnek bir proje üzerinde çalışarak, Tüm Platformlar için (Android, iOS, Win ve Mac OS X) "Fotoğraf Üzerine Yazı Yazma ve Kaydetme" uygulamasının linkini formun paket programlar bölümünde paylaştım.
viewtopic.php?f=12&t=35773
Hayırlı olması dileğiyle..
Re: Resim Üzerine Yazı Ekleme
Fesih Bey;
Gerçekten delphi konusunda çok uzmansınız. Sizin gibi işinin ehli kişileri bulmak Türkiyede çok zor. Bu nedenle öncelikle tebrik ediyorum ve yardımlarınız için çok çok teşekkür ediyorum.
Saygılarımla;
Gerçekten delphi konusunda çok uzmansınız. Sizin gibi işinin ehli kişileri bulmak Türkiyede çok zor. Bu nedenle öncelikle tebrik ediyorum ve yardımlarınız için çok çok teşekkür ediyorum.
Saygılarımla;
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Rica ederim. Faydalı olabildiysem ne mutlu bana.jakarta2 yazdı:Fesih Bey;
Gerçekten delphi konusunda çok uzmansınız. Sizin gibi işinin ehli kişileri bulmak Türkiyede çok zor. Bu nedenle öncelikle tebrik ediyorum ve yardımlarınız için çok çok teşekkür ediyorum.
Saygılarımla;
İyi çalışmalar...
Re: Resim Üzerine Yazı Ekleme
Tekrar Merhaba;
Image1.Bitmap.Canvas.CopyRect(Rect(30,30, Image1.Width, Image1.Height), Image2.Canvas, Rect(0, 0, Image2.Picture.Width, Image2.Picture.Height));
komutunda copyrect undeclared hatası veriyor android için bu komutu nerede ve nasıl tanıtacağım?
Image1.Bitmap.Canvas.CopyRect(Rect(30,30, Image1.Width, Image1.Height), Image2.Canvas, Rect(0, 0, Image2.Picture.Width, Image2.Picture.Height));
komutunda copyrect undeclared hatası veriyor android için bu komutu nerede ve nasıl tanıtacağım?
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Merhaba;
FMX uygulamalarda (Çoklu platform projelerinde), VCL uygulamalardaki CopyRect yerine Bitmap Canvas'ın DrawBitmap metodu kullanılır.
Ayrıca herhangi grafiksel bir nesnenin (Circle, Rectangle, Layout vb.) MakeScreenshot metodunu da kullanabilirsiniz. Örneğin;
MakeScreenshot, üzerinde bulunduğu alanın ekran görüntüsünü alır.
FMX uygulamalarda (Çoklu platform projelerinde), VCL uygulamalardaki CopyRect yerine Bitmap Canvas'ın DrawBitmap metodu kullanılır.
Ayrıca herhangi grafiksel bir nesnenin (Circle, Rectangle, Layout vb.) MakeScreenshot metodunu da kullanabilirsiniz. Örneğin;
Kod: Tümünü seç
Rectangle1.MakeScreenshot;
Re: Resim Üzerine Yazı Ekleme
Selam;
Aşağıdaki button2click ile birinci resmin istediğim yerine ikinci resmi yapıştırıp kaydedebiliyorum. Ancak ikinci resmin boyutlarını değiştirdiğimde boyutlarını değiştirdiğim ikinci resim simsiyah oluyor. Bu problemi nasıl aşabilirim? Bir de kullanıcıya hangi komutla ya da bileşenle resim seçtirebilirim?
Saygılarımla;
procedure TForm1.Button1Click(Sender: TObject);
begin
With Image1.Bitmap.Canvas do
begin
BeginScene;
Font.Size := 50;
Font.Family := 'Brush Script Std';
Fill.Color := TAlphaColors.Khaki;
Font.Style := [TFontStyle.fsbold];
FillText(TRectF.Create(120, 13, 400, 200), edit1.Text, True, 1, [TFillTextFlag.ftRightToLeft], TTextAlign.taLeading, TTextAlign.taLeading);
EndScene;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
MyBitmap: Tjpeg;
MyRect, myrect1: TRectF;
begin
// Image1.Bitmap.LoadFromFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto.jpg');
MyBitmap := TBitmap.CreateFromFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto.jpg');
mybitmap.Width := 281;
mybitmap.Height := 280;
MyRect := TRectF.Create(0, 50, 600, 400); //Eklenen resmin soldan ve üstten ne kadarının alındığı
MyRect1 := TRectF.Create(0, 100, 600, 400);//Birinci resmin soldan ve üstten neresinden başlayacağı
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect1, 20);
Image1.Bitmap.Canvas.EndScene;// With Image1.Bitmap.Canvas do
mybitmap.SaveToFile(TPath.GetSharedCameraPath + PathDelim + 'deneme.jpg');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Bitmap.SaveToFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto1.jpg');
end;
Aşağıdaki button2click ile birinci resmin istediğim yerine ikinci resmi yapıştırıp kaydedebiliyorum. Ancak ikinci resmin boyutlarını değiştirdiğimde boyutlarını değiştirdiğim ikinci resim simsiyah oluyor. Bu problemi nasıl aşabilirim? Bir de kullanıcıya hangi komutla ya da bileşenle resim seçtirebilirim?
Saygılarımla;
procedure TForm1.Button1Click(Sender: TObject);
begin
With Image1.Bitmap.Canvas do
begin
BeginScene;
Font.Size := 50;
Font.Family := 'Brush Script Std';
Fill.Color := TAlphaColors.Khaki;
Font.Style := [TFontStyle.fsbold];
FillText(TRectF.Create(120, 13, 400, 200), edit1.Text, True, 1, [TFillTextFlag.ftRightToLeft], TTextAlign.taLeading, TTextAlign.taLeading);
EndScene;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
MyBitmap: Tjpeg;
MyRect, myrect1: TRectF;
begin
// Image1.Bitmap.LoadFromFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto.jpg');
MyBitmap := TBitmap.CreateFromFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto.jpg');
mybitmap.Width := 281;
mybitmap.Height := 280;
MyRect := TRectF.Create(0, 50, 600, 400); //Eklenen resmin soldan ve üstten ne kadarının alındığı
MyRect1 := TRectF.Create(0, 100, 600, 400);//Birinci resmin soldan ve üstten neresinden başlayacağı
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect1, 20);
Image1.Bitmap.Canvas.EndScene;// With Image1.Bitmap.Canvas do
mybitmap.SaveToFile(TPath.GetSharedCameraPath + PathDelim + 'deneme.jpg');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Bitmap.SaveToFile(TPath.GetSharedCameraPath + PathDelim + 'YeniFoto1.jpg');
end;
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Merhaba;
Anladığım kadarıyla resmin bir bölümü alınacak.
Ekran görüntüsü:

Kod kısmı:
İyi çalışmalar
Anladığım kadarıyla resmin bir bölümü alınacak.
Ekran görüntüsü:

Kod kısmı:
Kod: Tümünü seç
procedure TForm1.Button4Click(Sender: TObject);
var
MyBitmap: TBitmap;
MyRect, myrect1: TRectF;
begin
MyBitmap := TBitmap.Create(281, 280);
try
MyRect := TRectF.Create(0, 50, 600, 400);
myrect1 := TRectF.Create(0, 100, 600, 400);
MyBitmap.Canvas.BeginScene;
MyBitmap.Canvas.DrawBitmap(Image1.Bitmap, MyRect, myrect1, 0.20);
MyBitmap.Canvas.EndScene;
MyBitmap.SaveToFile(GetCurrentDir + PathDelim + 'YeniFoto2.Png');
finally
MyBitmap.Free;
end;
end;
Re: Resim Üzerine Yazı Ekleme
Yapmak istediğim resmin bir bölümünü almaktan çok;
2 tane Timage düşünün 1. resim sabit 509*720 boyutlarında, üstünde ve altında şerit var. Ortası boş. Boş olan bölüm 280*280 ebatlarında ve Timage2 için bir resim seçilecek ve tam o alanı kaplayacak Seçilen resim küçükse genişletecek, büyükse küçültecek. Yani Auto size := True olacak diyebiliriz.
2 tane Timage düşünün 1. resim sabit 509*720 boyutlarında, üstünde ve altında şerit var. Ortası boş. Boş olan bölüm 280*280 ebatlarında ve Timage2 için bir resim seçilecek ve tam o alanı kaplayacak Seçilen resim küçükse genişletecek, büyükse küçültecek. Yani Auto size := True olacak diyebiliriz.
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Resim Üzerine Yazı Ekleme
Yukarıda yaptığım örnek ve bir önceki örnekte kullanmadığım tekniklerle yapabilirsiniz. Sabit resmin canvas'ına 2. seçilen resimi yeniden boyutlandırarak çizmelisiniz.
Daha önce paket programlar bölümünde örnek bir uygulama yaparak paylaşım.
İyi çalışmalar
Maalesef VCL kütüphanesinde yer alan OpenDialog veya OpenPictureDialog nesneleri FMX kütüphanesinde yok. Dikkat ederseniz Android ve iOS platformlarında geliştirilen yazılımlarda yazılım sahipleri farklı farklı teknikler kullanmışlar. Sizde dosya ve klasör arama ve listeleme methodları ile yapabilirsiniz.jakarta2 yazdı:
Bir de kullanıcıya hangi komutla ya da bileşenle resim seçtirebilirim?
Daha önce paket programlar bölümünde örnek bir uygulama yaparak paylaşım.
İyi çalışmalar
Re: Resim Üzerine Yazı Ekleme
Kullanıcıya resim seçtirme olayını actionlist'teki --> standart action----->Media Library---->TakePhotoFromLibraryAction1 bileşenini kullanarak hallettim. Çok basitmiş 
Ancak diğer konu sıkıntılı. Birinci resmin canvasını kullanarak ikinci resmi seçtirip yapıştırıyorum hiçbir sıkıntı olmuyor ancak, ikinci resmin boyutlarında minicik bir oynama yapsam bile ikinci resim bozuluyor. MarginWrapMode özelliği var , resmi streech, fit, orijinal olarak düzenlemesi gerek ama Rect değerleri nedeniyle sanırım işe yaramıyor.
Bir instagram düzenlemesi kodu buldum. Onunla deneyeceğim.
Çok teşekkür ederim.
Saygılarımla;

Ancak diğer konu sıkıntılı. Birinci resmin canvasını kullanarak ikinci resmi seçtirip yapıştırıyorum hiçbir sıkıntı olmuyor ancak, ikinci resmin boyutlarında minicik bir oynama yapsam bile ikinci resim bozuluyor. MarginWrapMode özelliği var , resmi streech, fit, orijinal olarak düzenlemesi gerek ama Rect değerleri nedeniyle sanırım işe yaramıyor.
Bir instagram düzenlemesi kodu buldum. Onunla deneyeceğim.
Çok teşekkür ederim.
Saygılarımla;