php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.05.2005, 11:02  
Neuer Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 28
Trumpfass
Trumpfass eine Nachricht über MSN schicken
Standard bildergröße ändern

hi,

ich habe ein script, mit dem ich bilder kleiner mache und dann nochmal zusätzlich bei bestimmten bildern einen thumbnail erstelle. so, wenn jetzt allerdings das ausgangsbilde größer als 2900px ist, bekomme ich nur eine schwarze fläche bei den neu erstellten bilder. wieso?

und noch eine frage: wie kann ich in meinem script festlegen, dass beim ersten bild immer die breite von 290px und beim thumbnail immer die höhe von 52px eingehalten wird?

hier der code:
Code:
<?php
	if ($_POST["Submit"]){
		$verz = $_POST["verz"];
		$bild = $_POST["bild"];
		$file_name = $_FILES["datei"]["name"];
		$split = split("\.", $file_name);
		$file_name2 = $split[0];
		print "Dateiname: ".$_FILES["datei"]["name"]."
";
		print "Dateigroesse: ".$_FILES["datei"]["size"]."
"; 
		print "Dateityp: ".$_FILES["datei"]["type"]."
";
		print "Temp_pfad: ".$_FILES["datei"]["tmp_name"]."
";
		$target_path = "../bilder/produkte/".$_FILES["datei"]["name"];
		move_uploaded_file($_FILES["datei"]["tmp_name"],$target_path);
function thumb($file, $save, $width, $height, $prop = TRUE) {
    // Requires GD-Lib > 2.0
    // Ist $prop=TRUE, so werden die Proportionen des Bildes
    // auch im Thumbnail eingehalten

    @unlink($save);
    $infos = @getimagesize($file);
    if($prop) {
        // Proportionen erhalten
        $iWidth = $infos[0];
        $iHeight = $infos[1];
        $iRatioW = $width / $iWidth;
        $iRatioH = $height / $iHeight;
        if ($iRatioW < $iRatioH)
        {
        $iNewW = $iWidth * $iRatioW;
        $iNewH = $iHeight * $iRatioW;
        } else {
        $iNewW = $iWidth * $iRatioH;
        $iNewH = $iHeight * $iRatioH;
        } // end if
    } else {
        // Strecken und Stauchen auf Größe
        $iNewW = $width;
        $iNewH = $height;
    }

    if($infos[2] == 2) {
        // Bild ist vom Typ jpg
        $imgA = imagecreatefromjpeg($file);
        $imgB = imagecreatetruecolor($iNewW,$iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
                           $iNewH, $infos[0], $infos[1]);
        imagejpeg($imgB, $save);
    } elseif($infos[2] == 3) {
        // Bild ist vom Typ png
        $imgA = imagecreatefrompng($file);
        $imgB = imagecreatetruecolor($iNewW, $iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
                           $iNewH, $infos[0], $infos[1]);
        imagepng($imgB, $save);
    } else {
        return FALSE;
    }
}


// Quelldatei
$from = "../bilder/produkte/".$file_name;
// Ziel 1+2
$to1 = "../bilder/produkte/".$verz."/".$bild.".jpg";
$to12 = "../bilder/produkte/".$verz."/".$bild."_thumb.jpg";

// Funktionsaufruf mit Einbehaltung der Proportionen
thumb($from, $to1, 290, 230, TRUE);
if($bild >= "1"){
	thumb($from, $to12, 290, 52, TRUE);
	}
unlink ("../bilder/produkte/".$file_name);
	}
?>
danke im vorraus,
alex
Trumpfass ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.05.2005, 11:11  
Gast
 
Beiträge: n/a
Standard

Zitat:
wenn jetzt allerdings das ausgangsbilde größer als 2900px ist, bekomme ich nur eine schwarze fläche bei den neu erstellten bilder. wieso?
Ab ca. 2500px Größe kommen die Grafik-Funktionen etwas ins schleudern
 
Alt 02.05.2005, 11:13  
Neuer Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 28
Trumpfass
Trumpfass eine Nachricht über MSN schicken
Standard

hmm...workarounds gibts da keine?
Trumpfass ist offline  
Alt 02.05.2005, 11:17  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von CIX88
Zitat:
wenn jetzt allerdings das ausgangsbilde größer als 2900px ist, bekomme ich nur eine schwarze fläche bei den neu erstellten bilder. wieso?
Ab ca. 2500px Größe kommen die Grafik-Funktionen etwas ins schleudern
kannst du mir das mal genauer erläutern? :P bzw links infos?


@Trumpfass:
-> eigener Server oder webspace?
weil bilder der größe wird die gdlib mit 8 MB (standard bei den meisten hostern) speicher wohl eh nimmer zurechtkommen.
bei eigenem server, vieleicht mal imagemagick in betracht ziehen
robo47 ist offline  
Alt 02.05.2005, 11:20  
Gast
 
Beiträge: n/a
Standard

Eigene Versuche zeigten, dass man zwar solche Bildgrößen mit z.B. imagepng() erstellen kann,
aber z.B. imagecreatefromjpeg() mag das wohl nicht.

Zudem ist es auch eine Speicherfrage.
 
Alt 02.05.2005, 11:21  
Neuer Benutzer
 
Registriert seit: 22.07.2004
Beiträge: 28
Trumpfass
Trumpfass eine Nachricht über MSN schicken
Standard

der, für den ich das mache is bei 1und1...hmm...wenn ich mal rumsuche, vielleicht find ich ja einen hoster mit imagemagick. packts das denn sicher?
Trumpfass ist offline  
Alt 02.05.2005, 11:27  
Gast
 
Beiträge: n/a
Standard

@robo47

Jo hatte kürzlich eine Test gemacht, dazu habe ich ein Bild mit 2500x2500px erstellt und als JPG angespeichert.
Das wollte ich dann hochladen ( http://www.cix88.de/cix_php/php__lev...o_bildgalerie/ ), ein Thumbnail wurde zwar erzeugt aber ohne Inhalt

Auf anderen Websiten bzw. Foren hab ich bereits ähnliches gelesen.
Fand aber bisher keine definitiven Aussagen darüber, ob auch wirklich die Grafik-Funktionen ein gewisses Max. haben.
 
Alt 02.05.2005, 11:27  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von Trumpfass
der, für den ich das mache is bei 1und1...hmm...wenn ich mal rumsuche, vielleicht find ich ja einen hoster mit imagemagick. packts das denn sicher?
kann ich nicht garantieren :P
aber hoffe es, weil ich selbst an nem system schreib, dass dateien bis ca 3500px schaffen sollte :P

mfg
robo47
robo47 ist offline  
Alt 02.05.2005, 11:52  
Gast
 
Beiträge: n/a
Standard

Zitat:
aber hoffe es, weil ich selbst an nem system schreib, dass dateien bis ca 3500px schaffen sollte
Oho ...

Bei einen 2500x2500px JPG-Bild z.B. werden schon ca. 18MB im Speicher gebraucht.
Da reicht es schon, wenn man imagecreatefromjpeg() benutzt.
 
Alt 02.05.2005, 12:13  
Erfahrener Benutzer
 
Registriert seit: 21.01.2005
Beiträge: 444
stf.stream
stf.stream eine Nachricht über ICQ schicken
Standard

Nach meiner Erfahrung steigt ein Script, wenn zu viel Speicher verbraucht wird, ohne 'ne weitere Meldung ab und bastelt nicht 'ne schwarze Fläche...

Ansonsten vllt so?:
Code:
ini_set('memory_limit', '24M');
mfg
__________________
stf.
stf.stream ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.