SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.10.2006, 17:20:54
Caroline Caroline ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 9
Thumbnails erstellen

Hallo!

Ich hab mich mal auf ein ganz neues Gebiet in PHP für mich gewagt: Imagefunktionen.
Ich wollt eigentlich nur 'n kleines Skript schreiben, was Vorschaubilder erzeugt.
Aber von der Unmenge an Imagefunktionen wird man ja erschlagen! :rolleyes

Nun ja, auf jeden Fall hab ich jetzt nach sau langer Arbeit 14 Zeilen Code zustande gebracht. :D
Aber - wie sollte es auch sonst sein? - funktioniert das Skript nicht!
Das Vorschaubild wird zwar erstellt, aber es ist immer einfach nur ein schwarzes Bild.

Ihr könnt mir ja bestimmt weiter helfen, oder? :)
PHP-Code:
<?php
$image 
'images/caro.jpg';
$image_name 'caro';

$image_info GetImageSize($image);

$image_width $image[0];
$image_height $image[1];

$image ImageCreateFromJPEG($image);
$thumbnail ImageCreateTrueColor(12090);
ImageCopy($thumbnail$image0000$image_width$image_height);
ImageJPEG($thumbnail'images/thm_' $image_name .  '.jpg');
?>
Mit Zitat antworten
  #2  
Alt 26.10.2006, 18:09:36
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Thumbnails erstellen

Hab zwar imagecopy() noch nie benutzt, aber um ein Thumbnail erstellen zu können solltest du imagecopyresized() verwenden. Mit dieser Funktion ist es möglich ein Bild in seiner Größe zu verändern. Bei imagecopy() würde nur ein Teil in das Thumbnail kopiert. Da diese Funktion ja nicht die Größe des Ausgangsbildes verändert. Warum es schwarz ist? Denke mal, dass der zu kopierende Teil des Ausgangsbildes nicht größer sein darf wie das erstellte Bild.

Fällt mir gerade noch ein. Gib deinem Thumbnail über die Funktion imagecolorallocate() erst noch eine Hintergrundfarbe. Ansonsten kann es vorkommen, dass das erstellte Thumbnail einen schwarzen Streifen am Rand haben kann.
__________________
Grüße Andes

Geändert von Andes (26.10.2006 um 18:13:40 Uhr)
Mit Zitat antworten
  #3  
Alt 26.10.2006, 18:37:49
Caroline Caroline ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 9
AW: Thumbnails erstellen

Wenn du sagst, du hast die Funktion imagecopy() noch nie benutzt...
Wie erstellst du denn Thumbnails?
Weil ich denke das mein Skript eh bisschen dumm ist, weil ich damit ja nur JPEG-Dateien bearbeiten kann. :)

PHP-Code:
$image ImageCreateFromJPEG($image);
$thumbnail ImageCreateTrueColor(12090);
ImageCopyResized($thumbnail$image000012090$image_width$image_height);
ImageJPEG($thumbnail'images/thm_' $image_name .  '.jpg'); 
Warning: imagecopyresized() [function.imagecopyresized]: Invalid image dimensions

Stimmt doch alles!?

Geändert von Caroline (26.10.2006 um 18:39:05 Uhr)
Mit Zitat antworten
  #4  
Alt 26.10.2006, 18:51:40
Opendix Opendix ist offline
Senior Member
 
Registriert seit: Oct 2004
Ort: Werdenberg / Schweiz
Alter: 35
Beiträge: 1.476
AW: Thumbnails erstellen

also ich hab das mal so gemacht:
$this -> pictureinfo ist das ergebnis von http://ch2.php.net/manual/de/function.getimagesize.php
PHP-Code:
if (function_exists("ImageCreateTrueColor") && $this -> pictureInfo[2]!=1)
{
    
$neuesBild    = @imagecreatetruecolor($this -> neueBreite$this -> neueHoehe);
}
else
{
    
$neuesBild    imageCreate($this -> neueBreite,$this -> neueHoehe);
}
if(
$this -> pictureInfo[2]==1)
{
    
// GIF
    
$altesBild    ImageCreateFromGIF("grossesBild.gif");
    
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$this ->neueBreite,$this -> neueHoehe$this -> pictureInfo[0], $this -> pictureInfo[1]);
    
imageGIF("bild.gif");
}

if(
$this -> pictureInfo[2]==2)
{
    
// JPG
    
$altesBild    ImageCreateFromJPEG("grossesBild.jpg");
    
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$this ->neueBreite,$this -> neueHoehe$this -> pictureInfo[0], $this -> pictureInfo[1]);
    
ImageJPEG("bild.jpg");
}

if(
$this -> pictureInfo[2]==3)
{
    
// PNG
    
$altesBild    ImageCreateFromPNG("grossesBild.png");
    
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$this ->neueBreite,$this -> neueHoehe$this -> pictureInfo[0], $this -> pictureInfo[1]);
    
ImagePNG("bild.png");
}
if(
$this -> pictureInfo[2] != && $this -> pictureInfo[2] != && $this -> pictureInfo[2] != 3)
{
    throw new 
Exception("Dieses Bild-Format wird nicht unterstützt!");

hoffe konnte dir mit diesem Code-Ausschnitt helfen :)
__________________
Opendix lehnt jegliche Haftung für evtl. vorhandene Fehler in der Grammatik sowie der Satzstellung ab! Bitte wenden Sie sich an die Tastatur!

Betatester gesucht:
Skiclub Gams / CEVI Grabs

Geändert von Opendix (26.10.2006 um 18:52:14 Uhr)
Mit Zitat antworten
  #5  
Alt 26.10.2006, 19:07:29
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Thumbnails erstellen

Zitat:
Zitat von Caroline Beitrag anzeigen
Wenn du sagst, du hast die Funktion imagecopy() noch nie benutzt...
Wie erstellst du denn Thumbnails?
So wie ich es ob beschrieben habe. Ich verwende dafür imagecopyresized(), wegen der oben genannten Gründe.

Wie groß ist dein Ausgangsbild? Ab einer Größe von 1000 Pixel x 1000 Pixel, kann es zu Problemen kommen. Die Teilweise nicht mal eine Fehlermeldung erzeugen.
__________________
Grüße Andes

Geändert von Andes (26.10.2006 um 19:08:13 Uhr)
Mit Zitat antworten
  #6  
Alt 26.10.2006, 19:13:21
Caroline Caroline ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 9
AW: Thumbnails erstellen

Ach so, du benutzt die ImageCopyResized()...
Also die Ausgangsgröße ist 600 x 450.
Und wenn ichs so mach wie du gesagt hast (und wie ich oben gepostet hab), dann kommt ahlt die fehlermeldung Warning: imagecopyresized() [function.imagecopyresized]: Invalid image dimensions

EDIT:
Und wo liegt der Unterschied zwischen den Funktionen ImageCopyResampled() und ImageCopyResized()?
Beide kopieren und ändern die Größe von einem Teils eines Bildes.
Bei ImageCopyResampled() steht nur auch noch "with resampling" dabei...
Was ist resampling? Welche der beiden Funktionen ist zu empfehlen?

Geändert von Caroline (26.10.2006 um 20:32:22 Uhr)
Mit Zitat antworten
  #7  
Alt 26.10.2006, 19:34:40
Benutzerbild von Swoosh
Swoosh Swoosh ist offline
Junior Member
 
Registriert seit: Oct 2006
Ort: Crailsheim / SHA / Stuttgart
Alter: 32
Beiträge: 388
Swoosh eine Nachricht über ICQ schicken Swoosh eine Nachricht über MSN schicken
AW: Thumbnails erstellen

So hab dir hier mal meine das gute ist es geht keine qualität verloren du musst halt bedenken imm 4:3 Seitenverhältnis einhalten
PHP-Code:
<?
    /* Thumbnails, (C) Cboard-Online.de, 2006 ( PHP-GD 2, Freeware ) */

    header("Content-Type: image/jpeg");
    
    $explode     = explode('x', $_GET['size']);

    $image        =    imagecreatefromjpeg(''.$_GET['img'].'');

    $width        =    imagesx($image);
    $height        =    imagesy($image);

    $picture    =    imagecreatetruecolor($explode['0'],$explode['1']);

    imagecopyresampled($picture, $image, 0,0, 0,0, $explode['0'],$explode['1'], $width,$height);

    imagejpeg($picture,"",100);

    ?>

Falls du intresse an einem hasst bei dem alle Formate gehen kannst dich ja mal bei mir melden unter ICQ 260 442 137

MfG Swoosh

Geändert von Swoosh (26.10.2006 um 19:35:59 Uhr)
Mit Zitat antworten
  #8  
Alt 26.10.2006, 21:40:43
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Thumbnails erstellen

Zitat:
Zitat von Caroline Beitrag anzeigen
Und wo liegt der Unterschied zwischen den Funktionen ImageCopyResampled() und ImageCopyResized()?
Beide kopieren und ändern die Größe von einem Teils eines Bildes.
Bei ImageCopyResampled() steht nur auch noch "with resampling" dabei...
Was ist resampling? Welche der beiden Funktionen ist zu empfehlen?[/b]
imagecopyresampled() solltest du imagecopyresized() vorziehen, da du so wesentlich bessere Qualität erreichst:

22.3. Wie kann ich Bilder verkleinern?
http://www.php-faq.de/q/q-grafik-verkleinern.html
Mit Zitat antworten
  #9  
Alt 26.10.2006, 22:21:52
Caroline Caroline ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 9
AW: Thumbnails erstellen

Also... ich hab's jetzt endlich geschafft. Aber ich habe mal eine prinzipielle Frage:

In PHP existieren nur die Funktionen ImageCreateFromGIF(), ImageCreateFromJPEG() und ImageCreateFromPNG(). Aber keine für bspw. BMP-Dateien.
Trotzdem ist es ja möglich, auch von BMP-Dateien Thumbnails zu erzeugen.
Das gibt's ja auch hier in diesem Forum - vBulletin kann das ja. Nur wie macht es dies?

Wie erzeugt man Thumbnails ohne die ImageCreateFromXXX()-Funktionen?
Mit Zitat antworten
  #10  
Alt 26.10.2006, 23:47:54
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Thumbnails erstellen

Was deine Frage zu BMP angeht, kann ich dir nicht weiterhelfen. Da ich dieses Format nicht im Web einsetzen würde und , wenn es eine bessere Qualität wie JPG sein soll, würde ich PNG vorziehen.

Resample heißt soviel wie neu berechnen. Allerdings gibt es dafür sehr unterschiedliche Methoden (Bikubisch,Bilinear). Welche aber bei imagecopyresampled() herangezogen wird weiß ich nicht und hab ich aus der Doku nicht erfahren können. Oder ich hab es einfach nicht gefunden.
Auch, wenn in dem Link von xabbuh beschrieben wird, dass diese Funktion bessere Ergebnisse liefern soll. Kann ich dies nicht wirklich nachvollziehen. Es steht schon nicht im Verhältnis Performance zu Bildqualität. Mit imagecopyresampled() braucht die Bilderstellung bald doppelt so lang wie mit imagecopyresized(). Die Serverlast ist mit Resample um 30% höher und die erstellte Datei ist auch größer. Die Bilddaten wie Tonwert sprechen da auch eine andere Sprache. Bei dem gleichen Ausgangsbild liefern beide erstellten Bilder fast identische Werte. Visuell ist gleich gar kein Unterschied zu erkennen.
Der Nutzen dieser Funktion gegenüber imagecopyresized() ist in meinen Augen gleich Null. Wenn man hochwertigere Ergebnisse erhalten möchte sollte man lieber auf ein Grafikprogramm setzen statt auf PHP-Funktionen.
__________________
Grüße Andes
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Thumbnails erstellen, ohne auf dem Server zu speichern? Abrow PHP Grundlagen 1 08.09.2006 22:44:11
Thumbnails erstellen Problem marcandre PHP Grundlagen 3 31.08.2006 05:07:13
Thumbnails hochladen oder generieren lassen Wanginator PHP für Fortgeschrittene und Experten 1 11.04.2006 16:27:19
Erstellen einer Datei durch einen Script LLlypa PHP Grundlagen 3 05.06.2004 10:26:14
Thumbnails dynamisch erstellen nino PHP Grundlagen 11 28.05.2004 15:18:33


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:24:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt