![]() |
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] |
Re: Online Avatar Resize
/ push :roll:
|
Re: Online Avatar Resize
Versuchs mal mit getimagesize();
Hier ein Beispiel aus SelfPHP 3.0
Code:
MfG
<?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]; ?> freak |
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 |
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:
Wie gesagt... Kanonen auf Spatzen
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; 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: |
Re: Online Avatar Resize
Zitat:
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 |
Re: Online Avatar Resize
Zitat:
Frank :coder: |
Re: Online Avatar Resize
Nächste Versuch: imagecopyresized();
Zitat:
Code:
Hier hab ich mal die Bannergröße verdoppelt. :)
<?
$image = imagecreatefromgif("banner.gif"); $image1 = imagecreate(936, 120); imagecopyresized($image1, $image, 0, 0, 0, 0, 936, 120, 468, 60); imagegif($image1); ?> Mavarik hat natürlich auch recht. ;)
Code:
MfG
[img]banner.gif[/img]
freak |
Re: Online Avatar Resize
Zitat:
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... |
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