Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Online Avatar Resize (https://www.delphipraxis.net/66303-online-avatar-resize.html)

ArmyMan 28. Mär 2006 08:26


Online Avatar Resize
 
Hallo Leute

Habe grad eine Page gemacht mit Benutzerprofilen. Jeder Benutzer kann sein persönliches Avatar raufladen, wie in jedem Forum z.B.
Falls nun ein Benutzer ein Bild hochladen will das den Dimensionen nicht entspricht, passt ein von mir gemachtes PHP Script die Grösse des Bildes an.
Nun funktioniert das bei .jpg, .gif, .png problemlos. Bei .bmp und animierten gifs geht das nicht.
Kann ich irgendwie mit Delphi eine Webanwendung machen das diese Bilder anpasst?
Falls ja, wäre ich froh wenn mir jemand weiterhelfen könnte.

Thx & Greetz

Nachtrag: Falls das mit Delphi nicht möglich ist, würde er gerne wissen mit welcher Sprache das leicht zu realisieren geht.

[edit=sakura] Nachtrag (Wortlaut leider verloren :oops:) in den ersten Post geschoben. Neuer Post bitte 24h warten. Mfg, sakura[/edit]

ArmyMan 13. Apr 2006 08:14

Re: Online Avatar Resize
 
/ push :roll:

freak4fun 13. Apr 2006 08:27

Re: Online Avatar Resize
 
Versuchs mal mit getimagesize();

Hier ein Beispiel aus SelfPHP 3.0
Code:
<?PHP
$bild = "php3_4.gif";
$info = getimagesize($bild);
echo "Bildbreite: " . $info[0];
echo "
";
echo "Bildhöhe: " . $info[1];
echo "
";
echo "Grafik-Typ: " . $info[2];
echo "
";
echo "HTML-Zeichenkette: " . $info[3];
?>
MfG
freak

ArmyMan 13. Apr 2006 08:31

Re: Online Avatar Resize
 
Hi freak4fun

Die grösse rauszufinden ist kein problem!
Das problem besteht darin, bmp und animierte gifs automatisch zu verkleinern. (falls bestimmte grösse übersteigt wird)
Leider kann PHP selbst bei diesen formaten die grösse nicht anpassen.

Greetz

Mavarik 13. Apr 2006 08:38

Re: Online Avatar Resize
 
Warum geht bmp nicht...
Das ist doch viel einfacher als GIF und JPG???

Stichwort "StretchDraw"

Oder auch die komplizierte Version z.B. für einen beliebigen Canvas wie Printer...

Delphi-Quellcode:
            Bits := MyImage.Picture.Bitmap.Handle;
            GetDIBSizes(Bits, InfoSize, ImageSize);
            Info := AllocMem(InfoSize);
            try
              Image := AllocMem(ImageSize);
              try
                GetDIB(Bits, 0, Info^, Image^);        
                with Info^.bmiHeader do
                  begin
                    DIBWidth := biWidth;
                    DIBHeight := biHeight;
                  end;
                  StretchDIBits(Printer.Canvas.Handle,
                                Screen2PrinterX(ChildControl.Left+Left)-Rand_Links, // rechnet z.B. 96 Screen DPI auf 300 Printer DPI um
                                Screen2Printery(Top)-Rand_Oben,
                                Screen2PrinterX(ChildControl.width),
                                Screen2PrinterY(ChildControl.height),
                                0, 0, DIBWidth, DIBHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY);
              finally
                FreeMem(Image, ImageSize);
              end;
            finally
              FreeMem(Info, InfoSize);
            end;
Wie gesagt... Kanonen auf Spatzen


Und Animierte Gifs...hmm müsste man die einzelnen Gifs auf Größe anpassen und dann wieder zusammen wegschreiben...

Habe ich auch mal geschrieben, finde leider die Sourcen gerade nicht... Melde mich wenn ich Sie gefunden habe...

Frank :coder:

freak4fun 13. Apr 2006 08:38

Re: Online Avatar Resize
 
Zitat:

Zitat von ArmyMan
Die grösse rauszufinden ist kein problem!

Entschuldigung, hab deinen ersten Post nur teilweise gelesen. :oops:

Würde es auch gehen das Bild durch Abschneiden des linken und unteren Randes zu verkleinern? Wenn ich so nachdenke, kenne ich kein Forum oder Ähnliches, das sowas macht. Wenn du eins kennst, kannst du ja da nachfragen. ;) Ansonsten sollten sich deine Benutzer selbst darum kümmern, dass ihre Bilder die richtige Größe haben. :gruebel:

MfG
freak

Mavarik 13. Apr 2006 08:39

Re: Online Avatar Resize
 
Zitat:

Zitat von ArmyMan
Hi freak4fun

Die grösse rauszufinden ist kein problem!
Das problem besteht darin, bmp und animierte gifs automatisch zu verkleinern. (falls bestimmte grösse übersteigt wird)
Leider kann PHP selbst bei diesen formaten die grösse nicht anpassen.

Greetz

Warum läßt Du das nicht den Browser machen?

Frank :coder:

freak4fun 13. Apr 2006 08:49

Re: Online Avatar Resize
 
Nächste Versuch: imagecopyresized();

Zitat:

Zitat von SelfPHP 3.0
<?PHP
$image = imagecreatefromgif("imagearc.gif");
$image1 = imagecreate(300,150);
$farbe_body=imagecolorallocate($image1,222,222,222 );
imagecopyresized($image1, $image, 30,25, 50,60,150,30, 91,26);
imagegif($image1);
?>

Code:
<?
$image = imagecreatefromgif("banner.gif");
$image1 = imagecreate(936, 120);
imagecopyresized($image1, $image, 0, 0, 0, 0, 936, 120, 468, 60);
imagegif($image1);
?>
Hier hab ich mal die Bannergröße verdoppelt. :)

Mavarik hat natürlich auch recht. ;)
Code:
[img]banner.gif[/img]
MfG
freak

Mavarik 13. Apr 2006 09:00

Re: Online Avatar Resize
 
Zitat:

Zitat von freak4fun
Mavarik hat natürlich auch recht. ;)
Code:
[img]banner.gif[/img]
MfG
freak

Danke... Ich würde hier klar unterscheiden was sich lohnt und was nicht...

Wenn ein User es cool findet ein Bild von der 12 Mega-Pixel Cam upzuloaden, sollte man dies
direkt im Upload oder danach verwerfen und eine Meldung bringen...

Aber wenn es um 80x100 auf 160x200 oder umgekehrt geht - Togal...

Frank :coder:

PS.: Warum soll man es den Browser machen lassen... Es gibt durchaus JPG Bilder die zwar 100%ig richtig
dargestellt werden, jedoch z.B. die Delphi JPEG Unit einen JPEG-Fehler meldet...
Klar mit try abgefangen, aber dann würde man diese Bilder immer verwerfen...

ArmyMan 13. Apr 2006 09:06

Re: Online Avatar Resize
 
Ok. Ich lass es mit dem <img ....> tag.
Stimmt, dieser aufwand lohnt sich wirklich nicht.

Thx & Greetz


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.

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