Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TJPEGimage (https://www.delphipraxis.net/142331-tjpegimage.html)

Detrox 27. Okt 2009 09:30

Re: TJPEGimage
 
Tyrael Y.


Das hatte ich ja auch schon funktioniert auch Super, aber wie gesagt nur jpg ich weis nicht welches Format das Bild hat es kann 3 Formate haben:

JPG/PNG/GIF

Ich probiere jetzt mal das andere aus.

LG

Tyrael Y. 27. Okt 2009 09:34

Re: TJPEGimage
 
Detrox mal bitte nachdenken.
Guck dir mal den Code von turboPASCAL an. Ich hab dsa Gefühl du hast es nicht gemacht.

Delphi-Quellcode:
...
        if AnsiLowerCase(FExt) = '.bmp' then
        begin
          Image.Picture.Assign(TBitmap(ImgStream));
          Result := True;
        end else
...
Dieser ganze Teil prüft auf den Typ und castet den Stream entsprechend.
Also bitte mal Posts, die dir auf den ersten Blick kompliziert erscheinen nicht übergehen.

Das Problem ist an sich schon gelöst.

DeddyH 27. Okt 2009 09:37

Re: TJPEGimage
 
Du widersprichst Dir selbst, der Code überprüft nicht den Typ, sondern die Endung ;). Aber gehen wir einfach davon aus, dass die schon stimmen wird, sonst verwirren wir den TE noch mehr, und verbessern kann man ja später immer noch.

Detrox 27. Okt 2009 09:42

Re: TJPEGimage
 
Hi turboPASCAL


Super Code, nur sieht meine Ermittelte Bildurl in etwa so aus:


http://www.google.de/tomate.gif

deine Function erwartet einmal die Variable URL & TImage

wenn ich das richtig verstehe ist TImage der Bildname mit Dateiendung?

Tyrael Y. 27. Okt 2009 09:45

Re: TJPEGimage
 
Ich wollte nur dem TE darauf aufmersam machen, daß es schon eine quasi Prüfung gibt.

Wenn es erst mal so läuft bei ihm kann er eine Funktion
Delphi-Quellcode:
type TPicTypes =(ptUnknown, ptBitmap, ptJPEG, ptPNG,....)
...
function GetTpyeOfImage(Stream: TMemoryStream): TPicTypes;
machen.
...und dann in einem Case das ganze abhändeln.

Lass ihn aber erst einmal das bisher verstehen. ;)

DeddyH 27. Okt 2009 09:50

Re: TJPEGimage
 
Meine Rede ;)

@TE: Du übergibst die URL und das TImage, in dem das Bild angezeigt werden soll, an die Funktion, das sollte doch nicht allzu schwer sein.
Delphi-Quellcode:
if not DownloadImageByName('http://www.irgendwo.de/bild.gif', ImageDasDieGrafikAnzeigenSoll) then
  //Fehlermeldung

Detrox 27. Okt 2009 09:52

Re: TJPEGimage
 
Tyrael Y.


Nach deinem Code, soll Delphi reagieren wenn die Dateiendung Beispielsweise ".gif" ist.

Aber wie reagieren, so bringe ich Delphi immer noch nicht dazu Gifs zu akzeptieren und anzuzeigen
oder muss ich da wieder alles komplett neu schreiben wie zB:

myJPEG := TGifImage.Create;

?

MarcoWarm 27. Okt 2009 09:53

Re: TJPEGimage
 
Hallo miteinander,

um die Massen noch ein wenig zu verwirren :twisted:

sagt euch mal gedanklich von dem GDI-Kram los. Also keine TJpegImage, TBitmap usw.

Macht es einfach per GDI+. Mir ist gestern aufgefallen, daß Windows (Vista) kein Problem damit hat, wenn eine GIF-Datei eine PNG-Endung hat.
Also ist folgender Code rausgekommen:

Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
var
  Graphics  : IGPGraphics;
  Bitmap    : IGPBitmap;
  FileStream : TFileStream;
  StreamAdap : TStreamAdapter;
begin
  FileStream:=TFileStream.Create('C:\Users\MaWarm\Desktop\tools.irgendeindateiformat', fmOpenRead);
  StreamAdap:=TStreamAdapter.Create(FileStream, soOwned);

  Graphics:=TGPGraphics.Create(Self.Canvas);
  Bitmap:=TGPBitmap.Create(StreamAdap);

  Graphics.DrawImage(Bitmap,MakePoint(0,0));
end;
Alles was ihr sonst noch so braucht, ist IGDIPlus.

Statt Filestream kann hier natürlich auch jeder andere Stream genutzt werden.

Viel Spaß
Marco

Tyrael Y. 27. Okt 2009 10:51

Re: TJPEGimage
 
Zitat:

Zitat von Detrox
Tyrael Y.


Nach deinem Code, soll Delphi reagieren wenn die Dateiendung Beispielsweise ".gif" ist.

Aber wie reagieren, so bringe ich Delphi immer noch nicht dazu Gifs zu akzeptieren und anzuzeigen
oder muss ich da wieder alles komplett neu schreiben wie zB:


Zitat:

Zitat von turboPASCAL

Delphi-Quellcode:
uses ..., IdHTTP, PngImage, Jpeg, GifImage;
// ...
          Image.Picture.Assign(TBitmap(ImgStream));
// ...
          Image.Picture.Assign(TJpegImage(ImgStream));
// ...
          Image.Picture.Assign(TPNGObject(ImgStream));
// ...
          Image.Picture.Assign(TGifImage(ImgStream));

Bei diesen Teilen des SourceCodes wird der Stream nach einer Prüfung, so behandelt wie der entsprechende Typ.
Genau das musst du dann machen.

Edit:
Der SourceCode von turboPascal ist doch ok, probier es doch mal.

Detrox 27. Okt 2009 11:01

Re: TJPEGimage
 
Ja der Quellcode von Turbopascal geht auch, hab mir mal bei jedem Bildformat Showmessage(Bildformat) anzeigen lassen erkennt alles richtig, nur zeigt das Bild noch nicht in meinem Image an.

da wos angezeigt werden soll: image1

aufgerufen habe ich die function so:

DownloadImageByName(avatarurl, Image1);

Wie gesagt wird nix angezeigt in der Imagebox


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz