 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
02.11.2004, 20:06
|
#1
|
|
TP-Senior
Registriert seit: Sep 2002
Ort: Hamburg
|
Bildergrößen ändern
Hi,
ich möchte ein Bild mit Hilfe eines Scripts auf den Server laden,
Danach soll das Bild in 2 Versionen abgespeichert werden. Die Versionen sollen sich nur durch die Faktoren Breite und Höhe unterscheiden.
Das Uploadscript funktioniert schon. Vielleicht kennt jemand von euch ein tutorial, dass mir hier weiterhelfen kann.
Lg Nico
|
|
|
02.11.2004, 20:08
|
#2
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Du willst quasi ein Thumbnail erstellen und das große bild u.U. auch kleiner machen, verstehe ich das richtig?
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
02.11.2004, 20:11
|
#3
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
move_uploaded_file();
getimagesize(); zum erkennen der größe
ImageCreateFromJPEG(); ensprechend für die anderen Bildertypen auch.
imagecreatetruecolor();
imagecopyresampled();
imagejpeg();
imagedestroy();
das sind die Funktionen, die du brauchst 
Zudem brauchst du noch die GD Lib 2.x damit diese Befehle alle verfügbar sind.
Tut kenn ich leider keins.. hab mir das selber so ein wenig zusammengebastelt..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
02.11.2004, 20:17
|
#4
|
|
TP-Senior
Registriert seit: Sep 2002
Ort: Hamburg
|
HI,
Also richtig bemerkt. ich möchte Thumbnails erstellen. Mir viel nur das wort nicht ein. Was mir nur wichtig ist, dass die Bilder nicht so pixelig aussehen, als wenn man mit Htm die Bild größe ändern würde. Ein gutes Beispiel ist E-Bay. Das Bild von dem Arktil sieht nicht einbischen pixelig aus.
Nun die Frage. Kann man das mit den Funktionen realisieren?
Zitat:
|
Zitat von loki
Zudem brauchst du noch die GD Lib 2.x
|
Ok, wo bekomme ich das her?
|
|
|
02.11.2004, 20:18
|
#5
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
auf dem meisten webspace dürfte eine aktuelle version installiert sein. mal phpinfo(); in eine php datei schreiben, hochladen und aufrufen. dann müsste es irgendwo stehen.
|
|
|
02.11.2004, 20:20
|
#6
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
hase und igel
hi nico,
du brauchst, wenn du lokis ratschlaege beachtest, keine zwei versionen auf dem server. frist platz und was machst du mit der ordnerei? legst du zwei verzeichnisse an oder schmeisst du sie mit unterschiedlichen namen in das gleiche verzeichnis? und wenn du mal ein bild loeschst? zeigt er dann das kleine immernoch an, falls du es zu loeschen vergessen hast? wie garantierst du, dass immer beide bilder geloescht werden?
ich koennte sicher noch mehr aufzaehlen, was gegen deinen ansatz und fuer die thumbnail-variante spricht.
zum thema galerie und thumbs findest du hier im forum jede menge sachen.
gruss
hardy
|
|
|
02.11.2004, 20:22
|
#7
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
wenn die seite nicht so viele besucher hat kannste es auch "onthefly" machen, aber die paar KB sind nun auch nicht sooo schlimm theo.
|
|
|
02.11.2004, 20:27
|
#8
|
|
TP-Senior
Registriert seit: Sep 2002
Ort: Hamburg
|
Also das ganze ist für eine Shop-System.
Hierfür benötige ich zwei Bilder 1. Bild bei der Auflistung der Artikel und das 2. Bild bei den Detail zu dem Artikel.
@the-architect
leider sehe ich gerade, dass das nicht auf meiem priv server mit installiert ist. Wie kann man das nach installieren. Hilft hierbei das Update auf PHP. 4.3.9 oder liegt es am Xitami-Server?
lg Nico
|
|
|
02.11.2004, 20:31
|
#9
|
|
TP-Veteran
Registriert seit: Jun 2004
Ort: Stuttgart
|
kann auch sein, das es nicht aktiviert ist. musst du mal in die php.ini kucken. aktuelle versionen haben die gd meistens mit an bord. am server liegt es glaube nicht.
|
|
|
02.11.2004, 20:32
|
#10
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Uff, wie man das installiert weiss ich nicht.. Noch nichtmal wo mans herbekommt
Das mit dem OnTheFly generieren ist in dem Fall gar nicht so schlecht, da in der Regel nicht mehr als 1-3 Bilder auf einer Seite sind, die verkleiner werden müssten..
Wenn du die GD Lib 1.x hast geht das mit den Thumbs auch irgendwie, aber da dann nur mit 256 Farben  - Recht suboptimal..
Und das mit dem löschen sollte nun auch kein Problem sein, wenn man eine vernünftige Adminoberfläche hat..
Das mit den Thumbs ist übrigens so ne Sache, wenn die beim hochladen erstellt werden sollen. Da hängt es dann nämlich von deiner Bandbreite ab, wie viele Bilder man dann hochladen kann.. Das Prob habe ich bei meiner Galerie, dass ich nur 3 Bilder hochladen kann, und das bei 1mbit upload..
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
02.11.2004, 20:37
|
#11
|
|
TP-Senior
Registriert seit: Sep 2002
Ort: Hamburg
|
Also meine PHP 4.3.8 Version hat keine GB Lib. Welche Versionen habt ihr?
|
|
|
02.11.2004, 20:38
|
#12
|
|
TP-Insider
Registriert seit: May 2003
Ort: Aachen
|
Ist nicht bei PHP dabei, muss man extra installieren
Mein Server hat irgendne 2er Version
Bin bei 1&1 mit so nem Packet
__________________
"Man muss die Welt nicht verstehen, man muss sich nur darin zurechtfinden."
Einstein
|
|
|
02.11.2004, 20:40
|
#13
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
|
Du kannst die GD Libary kostenlos runterladen, nur - wenn dein PHP Paket nicht all zu alt ist, hast du das eh schon. Du musst die ext php_gd2.dll nur in der php.ini mitladen lassen.
__________________
Zwei Dinge sind Unbestreitbar:- In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
- Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
|
|
|
02.11.2004, 20:50
|
#14
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
also aus eigener erfahrung (der ein oder andere wird sich mit grauen an meine ersten versuche einer bildergalerie erinnern ... nicht wahr jan  ) kann ich nur sagen, dass die variante mit den extra erstellten und abgelegten thumbs bei mir nicht lange durchgehalten hat. ist einfach umstaendlicher.
und was das thema "on-the-fly" und geschwindigkeit betrifft ... siehe signatur. das ding laeuft ohne db und bringt die texte auch gleich mit.
die verwenden wir nun schon so lange und sind bei jedem event hier immer up-to-date, was bilder und texte angeht. keine adminoberflaeche. einfach nur bilder ins verzeichnis schmeissen und feddich.
ps: hi dennis, herzlich willkommen im club! 
|
|
|
02.11.2004, 22:06
|
#15
|
|
TP-Veteran
Registriert seit: Dec 2002
Ort: london
|
Mit dem folgenden Quelltext erstellt jonemo eine Preview und einen Snapshot eines Bildes, was soeben hochgeladen wurde:
PHP-Code:
if ( $_FILES['datei']['error'] == 1 OR $_FILES['datei']['error'] == 2 ) { message_die ('<strong>Das hochgeladene Bild ist zu groß. Die höchste mögliche Dateigröße ist bei 2 MB.</strong>'); } elseif ( $_FILES['datei']['error'] == 3 ) { message_die ('<strong>Die Datei wurde nicht vollständig hochgeladen.</strong><br /><br />Das passiert meistens, wenn aus irgendeinem Grund die Verbindung kurz weg war oder jemand abbrechen gedrückt hat. Jedenfalls ist hier nicht so viel angekommen, wie du abgeschickt hast.'); } elseif ( $_FILES['datei']['error'] == 4 ) { message_die('<strong>Es wurde keine Datei hochgeladen.</strong>'); } if ( $_FILES['datei']['size'] == 0 ) // der einzige fall bei dem das hier eintritt ist imho, wenn der user eine file ausgewählt hat, die es defacto nicht gibt. irgendwie wird die dann als octet stream hochgeladen, hat aber die größe 0 { @unlink($_FILES['datei']['tmp_name']); message_die('<strong>Die Datei hat die Größe 0.</strong><br /><br />Das passiert meistens, wenn du eine Datei ausgewählt hast, die es irgendwie nicht gibt. Versucht du vielleicht, direkt von der Kamera hochzuladen und die Kamera will gerade nicht? Versuche es am besten noch einmal.'); } // die übertragung und so haben also erst mal geklappt, jetzt wird das bild auf bildhaftigkeit untersucht $size = @getimagesize($_FILES['datei']['tmp_name']); //1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM if ($size[2] == 1) $extension = 'gif'; if ($size[2] == 2) $extension = 'jpg'; if ($size[2] == 3) $extension = 'png'; if ($size[2] == 6) $extension = 'bmp'; if ($extension == '') message_die('<strong>Falsches Dateiformat</strong><br />Die Datei ist in einem Dateiformat, welches nicht unterstützt wird. Zur Zeit werden GIF, JPEG, PNG, PSD und BMP Dateien akzeptiert.'); // Womit wir auch das erledigt hätten und die Datei erst mal an ort und stelle schieben können... $filename = time() . '_' . md5($_SERVER['REMOTE_ADDR']); $path = $_SERVER['DOCUMENT_ROOT'] . 'mapmod/originale/' . $filename . '.' . $extension; if ( ! @move_uploaded_file($_FILES['datei']['tmp_name'], $path) ) { @unlink($_FILES['datei']['tmp_name']); message_die('Ein undefinierbarer und nie auch nur von irgendwem bedachter Fehler ist aufgetreten. Versuche bitte nocheinmal, die Karte hochzuladen. Sollte der Fehler weiterhin bestehen, dann nutze bitte das Kontaktformular, um mit dem Administrator Kontakt aufzunehmen.'); } // snapshot generieren $original = $path; $snap = $_SERVER['DOCUMENT_ROOT'] . 'mapmod/snapshots/' . $filename . '.jpg'; // Bilddaten feststellen $breite=$size[0]; $hoehe=$size[1]; // neue Bilddaten generieren if ($breite > $hoehe) { $neueBreite=100; $neueHoehe=intval($hoehe*$neueBreite/$breite); }else { $neueHoehe=100; $neueBreite=intval($breite*$neueHoehe/$hoehe); } // JPG erstellen if ($size[2] == 1) $altesBild=ImageCreateFromGIF($original); if ($size[2] == 2) $altesBild=ImageCreateFromJPEG($original); if ($size[2] == 3) $altesBild=ImageCreateFromPNG($original); if ($size[2] == 6) $extension = 'bmp'; // hier muss ich mir noch was überlegen if ($config['gdlib_version'] == 2) { $neuesBild=Imagecreatetruecolor($neueBreite,$neueHoehe); ImageCopyResampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); } elseif ($dms_config['pic']['gdlib_version'] == 1) { $altesBild=ImageCreateFromJPEG($original); $neuesBild=ImageCreate($neueBreite,$neueHoehe); ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); } else { message_die('<strong>In der Konfigurationsdatei wurde keine GD-Lib-Version angegeben!</strong><br /><br />Im Klartext: Der Admin hat\'s verbockt. Melde diesen Fehler bitte unbedingt an den Administrator (Kontaktformular!).'); } ImageJPEG($neuesBild,$snap); // preview generieren $original = $path; $snap = $_SERVER['DOCUMENT_ROOT'] . 'mapmod/previews/' . $filename . '.jpg'; // Bilddaten feststellen $breite=$size[0]; $hoehe=$size[1]; // neue Bilddaten generieren if ($breite > $hoehe) { $neueBreite=400; $neueHoehe=intval($hoehe*$neueBreite/$breite); }else { $neueHoehe=400; $neueBreite=intval($breite*$neueHoehe/$hoehe); } // JPG erstellen if ($size[2] == 1) $altesBild=ImageCreateFromGIF($original); if ($size[2] == 2) $altesBild=ImageCreateFromJPEG($original); if ($size[2] == 3) $altesBild=ImageCreateFromPNG($original); if ($size[2] == 6) $extension = 'bmp'; // hier muss ich mir noch was überlegen if ($config['gdlib_version'] == 2) { $neuesBild=Imagecreatetruecolor($neueBreite,$neueHoehe); ImageCopyResampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); } elseif ($dms_config['pic']['gdlib_version'] == 1) { $altesBild=ImageCreateFromJPEG($original); $neuesBild=ImageCreate($neueBreite,$neueHoehe); ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); } else { message_die('<strong>In der Konfigurationsdatei wurde keine GD-Lib-Version angegeben!</strong><br /><br />Im Klartext: Der Admin hat\'s verbockt. Melde diesen Fehler bitte unbedingt an den Administrator (Kontaktformular!).'); } ImageJPEG($neuesBild,$snap);
| | |