Netteki Resimleri Kullanabilen İmage Objesi

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

Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail »

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: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen csunguray »

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: 74
Kayıt: 04 Eki 2008 10:30

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail »

hocam zatem öyle yapıyorum ama olmuyor işte
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mkysoft »

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: 74
Kayıt: 04 Eki 2008 10:30

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen nodetail »

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: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mrmarman »

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 ....Resim
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen tuna »

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: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen mrmarman »

İ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 ....Resim
baloglurecep
Üye
Mesajlar: 261
Kayıt: 21 Tem 2006 04:59
İletişim:

Re: Netteki Resimleri Kullanabilen İmage Objesi

Mesaj gönderen baloglurecep »

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