Netteki Resimleri Kullanabilen İmage Objesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail » 25 Nis 2009 02:48

program içine yerleştirdiğim image veya jvimage objeleri ile localdeki resimleri görüntüleyebiliyorum ben host'um altınadaki resim klaörümde yer alan resimleri görüntülemek istiyorum bunu nasıl yapabilirim.

örnek;
localdeki path'im c:\resimler

hosttaki path ise ftp://xx.xxx.xx.xx/httpdocs/resimler bu şeklilde bunu bi türlü başaramadım ayrı bir bileşen felan mı kullanmalıyım

Kullanıcı avatarı
csunguray
Üye
Mesajlar: 850
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen csunguray » 25 Nis 2009 03:31

LoadFromFile ile deneyin. Dosya adı olarak resmin URL'sini verin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail » 25 Nis 2009 05:24

hocam zatem öyle yapıyorum ama olmuyor işte

mkysoft
Kıdemli Üye
Mesajlar: 3006
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mkysoft » 25 Nis 2009 07:52

bunun için bir çok yöntem geldi aklıma. basitten zora yazayım
1. resimleri bir webbrowser nesnesi içinde açmayı deneyebilirsiniz (ftp desdeklemez sanırım).
2. image nesnesini kullanmak istiyorsanız, resmi kaydedip açabilirsiniz (idhttp yada idftp ile geçici bir klasöre kaydederek).
3. resmi bir tsream içine idhttpden yada idftpden aldıktan sonra image nesnesine aktarabilirsiniz (temp klasörüne ihityacınız olmaz).

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 09:30

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail » 26 Nis 2009 11:00

hocam sağol sanırım başkada alternatif kalmıyor benim için en sağlıklısı 3. seçenek olacaktır bu konuda biraz aydınlatırmısın lütfen

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mrmarman » 26 Nis 2009 03:37

Stream aldığında Stream içeriğine binary olarak bakarak içerdiği resmin tipini anlaman lazım. Öncelikle bunun altını çizeyim.

Gelen resmin JPG olduğunu bildiğini varsayarak şöyle bir örnek hazırladım.

Uses satırına JPEG ve IdHttp eklemeyi unutma...

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  IdHttp : TIdHttp;
  Stream : TMemoryStream;
  Url    : WideString;
  JPG    : TJpegImage;
begin
  Url    := 'http://www.armantr.com/images/Delphi2007.jpg';
  IdHttp := TIdHTTP.Create(self);
  try
    IdHttp.HandleRedirects := True;
    IdHttp.AllowCookies := True;
    with IdHttp do
    begin
      Request.UserAgent       := 'Mozilla/4.0';
      Request.Connection      := 'Keep-Alive';
      Request.ProxyConnection := 'Keep-Alive';
      Request.CacheControl    := 'no-cache';
    end;
    Stream := TMemoryStream.Create;
    try
      try
        IdHttp.Request.Referer := '';
        IdHttp.Get(Url,Stream);
        // LoadFromStream komutundan önce mutlaka "Position := 0" yapmak lazım...
        // Çünkü stream beslendiğinde position daima sondadır...
        Stream.Position := 0;
          JPG := TJpegImage.Create;
          JPG.LoadFromStream( Stream );
          Image1.Picture.Bitmap.Assign(JPG);
          JPG.Free;
      except
      on e:exception do
        begin
        //error handling
        end;
      end;
    finally
      Stream.Free;
    end;
  finally
    IdHttp.Free;
  end;
end;
Başarılar... :idea:
Resim Resim

Kullanıcı avatarı
tuna
Üye
Mesajlar: 297
Kayıt: 07 Tem 2008 03:39
Konum: İstanbul

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen tuna » 27 Nis 2009 07:31

mrmarman yazdı:Stream aldığında Stream içeriğine binary olarak bakarak içerdiği resmin tipini anlaman lazım. Öncelikle bunun altını çizeyim.

Gelen resmin JPG olduğunu bildiğini varsayarak şöyle bir örnek hazırladım.

Uses satırına JPEG ve IdHttp eklemeyi unutma...

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  IdHttp : TIdHttp;
  Stream : TMemoryStream;
  Url    : WideString;
  JPG    : TJpegImage;
begin
  Url    := 'http://www.armantr.com/images/Delphi2007.jpg';
  IdHttp := TIdHTTP.Create(self);
  try
    IdHttp.HandleRedirects := True;
    IdHttp.AllowCookies := True;
    with IdHttp do
    begin
      Request.UserAgent       := 'Mozilla/4.0';
      Request.Connection      := 'Keep-Alive';
      Request.ProxyConnection := 'Keep-Alive';
      Request.CacheControl    := 'no-cache';
    end;
    Stream := TMemoryStream.Create;
    try
      try
        IdHttp.Request.Referer := '';
        IdHttp.Get(Url,Stream);
        // LoadFromStream komutundan önce mutlaka "Position := 0" yapmak lazım...
        // Çünkü stream beslendiğinde position daima sondadır...
        Stream.Position := 0;
          JPG := TJpegImage.Create;
          JPG.LoadFromStream( Stream );
          Image1.Picture.Bitmap.Assign(JPG);
          JPG.Free;
      except
      on e:exception do
        begin
        //error handling
        end;
      end;
    finally
      Stream.Free;
    end;
  finally
    IdHttp.Free;
  end;
end;
Başarılar... :idea:
Hocam ellerine sağlık. Yazıdığın kodu bende denedim gerçekten mükemmel çalışıyor ve çok hızlı. Ancak ben birşey merakediyorum. Görüntüleyeceğim resmin jpg,gif,bmp ..... olduğunu nasıl anlayabilirim.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mrmarman » 27 Nis 2009 09:47

İlk akla gelen iki ihtimal sunabilirim.

1. Web sitesindeki resimler genelde PNG, JPG veya GIF olarak bulunur. Sen TRY..EXCEPT bloklarıyla bu üçünü sıklıkla bulunma sırasına göre deneme yanılma ile test edersin. Bu kolay bir metoddur.

2. Resmin ne türde olduğunu BINARY kontrol ile yani gelen STREAM'in ilk birkaç byte'lık kısmındaki HEADER kısmından faydalanarak dosya tipini öğrenerek nokta tespiti yaptırabilirsin.

Sanırım sen kısa yol olan birinci yolu tercih edebilirsin. Ben projelerimde lazım olduğunda genelde ikinci yolu kullanırım çünkü yaptığım fonksiyonları modül olarak her an elimin altında hazır bulunmasını isterim. Ayrıca Word, Excel, ZIP, RAR, EXE vb. hangi tipte olduğunu da test ederek gelen dosyanın uzantısı ne olusa bile yapısal içeriği farklı olan (bozuk dosya - virüs / trojan eklenmiş olan vs.) gibi mevzuları da hesaba katarım.
Resim Resim

baloglurecep
Üye
Mesajlar: 244
Kayıt: 21 Tem 2006 03:59
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen baloglurecep » 22 Tem 2010 12:21

selamlar arkadaşlar bu konuda ben deneme sonucu kullandığım 3.nesil bir kompananet setinin bir elamananının bu işi çok iyi yaptığını farkettim.sizinle paylaşayım dedim. imageEn diye bir bileşen seti. bu setle photoshop yapabilirsiniz :) web kamaersından tutunda tarayıcı programına, güvenlik programlarına, resimle ilgili herşey video ile ilgili her şey yapılablir. içindeki resim göstericiyi koyun forma resim adresi olarak loadfromfile('www.adres.com/resim.png') gibi denemiz yeterli... ;

Cevapla