SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 02.11.2004, 20:06   #1
TP-Senior
 
Benutzerbild von hhcity
 
Registriert seit: Sep 2002
Ort: Hamburg
hhcity ist auf einem guten Weg

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
hhcity ist offline   Mit Zitat antworten


Alt 02.11.2004, 20:08   #2
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
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

loki ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:11   #3
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
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

loki ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:17   #4
TP-Senior
 
Benutzerbild von hhcity
 
Registriert seit: Sep 2002
Ort: Hamburg
hhcity ist auf einem guten Weg
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?
hhcity ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:18   #5
TP-Veteran
 
Benutzerbild von the-architect
 
Registriert seit: Jun 2004
Ort: Stuttgart
the-architect bringt sich richtig einthe-architect bringt sich richtig ein
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.
__________________
mein blog | imedo.de | clubrating.de | deviantart


the-architect ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:20   #6
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
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
theo ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:22   #7
TP-Veteran
 
Benutzerbild von the-architect
 
Registriert seit: Jun 2004
Ort: Stuttgart
the-architect bringt sich richtig einthe-architect bringt sich richtig ein
wenn die seite nicht so viele besucher hat kannste es auch "onthefly" machen, aber die paar KB sind nun auch nicht sooo schlimm theo.
__________________
mein blog | imedo.de | clubrating.de | deviantart


the-architect ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:27   #8
TP-Senior
 
Benutzerbild von hhcity
 
Registriert seit: Sep 2002
Ort: Hamburg
hhcity ist auf einem guten Weg
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
hhcity ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:31   #9
TP-Veteran
 
Benutzerbild von the-architect
 
Registriert seit: Jun 2004
Ort: Stuttgart
the-architect bringt sich richtig einthe-architect bringt sich richtig ein
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.
__________________
mein blog | imedo.de | clubrating.de | deviantart


the-architect ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:32   #10
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
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

loki ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:37   #11
TP-Senior
 
Benutzerbild von hhcity
 
Registriert seit: Sep 2002
Ort: Hamburg
hhcity ist auf einem guten Weg
Also meine PHP 4.3.8 Version hat keine GB Lib. Welche Versionen habt ihr?
hhcity ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:38   #12
TP-Insider
 
Benutzerbild von loki
 
Registriert seit: May 2003
Ort: Aachen
loki ist auf einem guten Weg
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

loki ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:40   #13
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
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^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 02.11.2004, 20:50   #14
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
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!
theo ist offline   Mit Zitat antworten
Alt 02.11.2004, 22:06   #15
TP-Veteran
 
Benutzerbild von jonemo
 
Registriert seit: Dec 2002
Ort: london
jonemo macht sich hier sehr viel Mühe
Mit dem folgenden Quelltext erstellt jonemo eine Preview und einen Snapshot eines Bildes, was soeben hochgeladen wurde:

PHP-Code:
    if ( $_FILES['datei']['error'] == OR $_FILES['datei']['error'] == )
     {
         
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'] == )
     {
         
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'] == )
     {
         
message_die('<strong>Es wurde keine Datei hochgeladen.</strong>');
     }
 
     if ( 
$_FILES['datei']['size'] == )    // 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);