php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.05.2008, 22:21  
Erfahrener Benutzer
 
Registriert seit: 14.05.2008
Beiträge: 183
netti befindet sich auf einem aufstrebenden Ast
Standard probleme mit bilderupload imagecreatefromjpeg() php script

Hey, ich hab hier ein altes problem.
Ich hab schon alles durchsucht, komme aber einfahc nciht weiter. Ich habe hier ein Bild mit 534 kb, 2260*1699px Gesamtgröße. Das ganze soll über ImageCreateFromJPEG verkleinert und auf einen webspace gestellt werden. Dummerweise passiert einfach gar nichts. Gar nichts heißt, der Server bricht ohne erdenkbaren Grund ab bei:

PHP-Code:
$oldpic = @ImageCreateFromJPEG($DatTemp) or die("<b>Fehler bei Skalierung</b><br> Bitte skalieren Sie das Bild manuell auf eine Breite von 298px und versuchen Sie es erneut.<br>"); 
Das komische daran ist, dass nichtmal die() ausgegeben wird. Auch der Server lädt nicht erst noch ewig, er bricht dann einfach ab. Bei anderen Bildern wiederum gehts. Warum auch immer.

Ich nehme mal an, dass es ein Größenproblem ist, ich habe deswegen den Memory manuell schon auf 128 gesetzt, hilft aber nichts.

Das ganze ist ein Server bei 1und1.

Danke für Hilfe,
netti
netti ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.05.2008, 22:24  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Versuche es mal mit
PHP-Code:
error_reporting(E_ALL);
ini_set('display_errors'1);
echo 
'<div>'.ini_get('memory_limit')."</div>\n";
echo 
'<pre>'var_dump(getimagesize($DatTemp)); "</pre>\n";
$oldpic = @ImageCreateFromJPEG($DatTemp) or die("<b>Fehler bei Skalierung</b><br> Bitte skalieren Sie das Bild manuell auf eine Breite von 298px und versuchen Sie es erneut.<br>"); 
David ist offline  
Alt 19.05.2008, 22:31  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Hallo,

wenn du als Content-Type einen Grafik-Typ angegeben hast, ist es nur logisch, dass du die Meldung nicht siehst. Sie ist zwar da, wird aber nicht ausgegeben. Stattdessen siehst du nur ein Broken-Image-Icon. Um die Meldung zu sehen, musst du sie entweder woanders speichern oder den Content-Type zeitweilig auf ein Text-Format setzen.
Manko10 ist offline  
Alt 19.05.2008, 22:53  
Erfahrener Benutzer
 
Registriert seit: 14.05.2008
Beiträge: 183
netti befindet sich auf einem aufstrebenden Ast
Standard

Vielen dank für eure nachrichten, sorichtig weitergeholfen hat mir das leider nur nicht:

Code:
40M
 array(7) {
  [0]=>
  int(2266)
  [1]=>
  int(1699)
  [2]=>
  int(2)
  [3]=>
  string(26) "width="2266" height="1699""
  ["bits"]=>
  int(8)
  ["channels"]=>
  int(3)
  ["mime"]=>
  string(10) "image/jpeg"
}
Heißt der memory liegt bei 40mb... also unter den 128. Ich kann den fehler nicht deuten =/

Zitat:
Zitat von Manko10 Beitrag anzeigen
Sie ist zwar da, wird aber nicht ausgegeben. Stattdessen siehst du nur ein Broken-Image-Icon. Um die Meldung zu sehen, musst du sie entweder woanders speichern oder den Content-Type zeitweilig auf ein Text-Format setzen.
Das ist der Punkt. Da ist kein brokenimage icon. Da ist einfach NICHTS. Nicht mal was im quelltext. einfach abgebrochen, wie exit(). ich verstehs nicht.
netti ist offline  
Alt 19.05.2008, 23:00  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Also soweit passiert ja auch noch nicht viel, außer, dass du ein Bild aus einer JPEG-Grafik erstellt hast und dieses in den Speicher geladen wurde. Um diese auszugeben musst du noch

imagepng($oldpic)

ausführen (oder eben die entsprechenden Funktionen für andere Grafikformate).
Manko10 ist offline  
Alt 20.05.2008, 08:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von netti Beitrag anzeigen
Heißt der memory liegt bei 40mb... also unter den 128. Ich kann den fehler nicht deuten =/
Exakt. Vielleicht hast Du die falsche php.ini bearbeitet.
PHP: get_cfg_var - Manual
Zitat:
To check whether the system is using a configuration file, try retrieving the value of the cfg_file_path configuration setting.
Genau so solltest Du prüfen, welche Datei Du ändern musst
PHP-Code:
<?php var_dump(get_cfg_var('cfg_file_path')); ?>
2266*1699*5 Bytes ~ 18,5MB. Soviel Speicher brauchst Du, nur um das Bild mit gd im Speicher zu halten. Sollte es wirklich am Speicher liegen, macht Dein Skript noch irgendetwas anderes Speicher-aufwendiges.
David ist offline  
Alt 20.05.2008, 14:00  
Erfahrener Benutzer
 
Registriert seit: 14.05.2008
Beiträge: 183
netti befindet sich auf einem aufstrebenden Ast
Standard

okay, also problem dabei ist, dass ich als kommerzieller nutzer von webangeboten bei 1un1 keinen Zugriff auf die php.ini habe. Aberes gibt ja auch andere Wege: Ich hab mal via

PHP-Code:
echo ini_get("memory_limit"); //Gibt 40M aus
ini_set("memory_limit","128M");
echo 
ini_get("memory_limit"); //Gibt 128M aus 
den speicher auf 128 gesetzt, dennoch bricht das script ohne erdenklichen Grund ab.
memory_get_usage() habe ich eingebaut, meldet aber lächerliche 148792 bytes vor der stelle des abbruchs.

Was ich nciht verstehe ist die berechnung der bIldgröße... wieso *5bytes? Sollte das Größe*Breite*Kanäle(also3)*farbbits(alsosein?

manko: Ja naja, es ist jetzt nicht, so dass danach einfach kein Befehl mehr kommen würde... das script geht schon weiter:

PHP-Code:
   $oldpic ImageCreateFromJPEG($DatTemp) or die("<b>Fehler bei Skalierung</b><br> Bitte skalieren Sie das Bild manuell auf eine Breite von 298px und versuchen Sie es erneut.<br>");
   
$newpic ImageCreateTrueColor($imgwidth,$imgheight);
   
ImageCopyResampled($newpic,$oldpic,0,0,0,0,$imgwidth,$imgheight,$DatBild[0],$DatBild[1]); 
   
ImageJPEG($newpic,"$UplOrdTwo/$DatName_new"90) or die("<b>JPEG-Kopierfehler erster Ordnung</b><br><i>Beim Kopieren sind Fehler aufgetreten</i><br><br>Bitte melden Sie folgende Daten an einen Administrator <".$_incl['Admin']."> weiter: $DatName, $DatTyp, $DatBild[0], $DatBild[1], $UplOrdTwo, $DatName_new");
   
ImageDestroy($oldpic) && ImageDestroy($newpic); 
Nur passieren tut da nix mehr. Abbruch ohne Fehler.
netti ist offline  
Alt 20.05.2008, 14:38  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von netti Beitrag anzeigen
Was ich nciht verstehe ist die berechnung der bIldgröße... wieso *5bytes? Sollte das Größe*Breite*Kanäle(also3)*farbbits(alsosein?
Soweit ich weiss, hält GD das Bild immer als CMYK+alpha mit je einem Byte im Speicher, also 5 Byte per Pixel.

Bricht es immer bei großen Bildern ab und nur bei bestimmten?
Was passiert bei
PHP-Code:
<?php
for($i=0$i<=3000$i+=200)
{
  echo 
"<div>$i</div>\n"flush();
  
$im imagecreatetruecolor($i$i);
  
$b imagecolorallocate($im000);
  
imagefill($im00$b); 
}
echo 
"<div>Done.</div>"flush();
?>
?
David ist offline  
Alt 20.05.2008, 16:48  
Erfahrener Benutzer
 
Registriert seit: 14.05.2008
Beiträge: 183
netti befindet sich auf einem aufstrebenden Ast
Standard

okay. Also soweit ich das beurteilen kann bricht es nur bei bestimmten bildern ab. Gestern habe ich eins hochgeladen mit 765kb, also mehr als oben. ... Ah aber moment, ich sehe gerad die pixelzahl war geringer: 1347*1796

Ich hab jetzt mal suprobiert und das Bild in 100er Schritten großskaliert. Dabei komme ich auf eine kritische Grenze von 1615px Breite und daraus resultierend 2154px höhe. Ab 1616px breite und 2155px höhe, bricht das script wieder ab. Skaliere ich auf 1615*2155px geht alles, bei 1615*2156 bricht er ab. Die kritische Grenze muss also irgendwo zwischen 3480325px. und 3481940px. liegen.

Das Script von david geht exakt bis 1600 und bricht dann kommentarlos ab.
netti ist offline  
Alt 20.05.2008, 18:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Mal schauen, ob es wirklich am Speicher liegt
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1);
function 
foo()
{
  
$x memory_get_usage(true);
  
printf('%.2f '$x/1048576);
}

echo 
PHP_VERSION " ";
foo();
$e str_repeat('a',1024);
$e str_repeat($e2048); // 2MB

foo();
$a str_repeat($e4);
for(
$i=0$i<80$i++)
{
  if (
$i%8==0) echo "<br />\n";
  
$a .= $e;
  
foo();
}
David 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Diverses aus meinem Apache Logs robo47 Server, Hosting und Workstations 5 25.05.2007 22:45
Script beendet sich ohne Fehlermeldung Zahl PHP Tipps 2006 6 04.06.2006 20:41
Probleme beim �bertragen an eine Mysql Datenbank Datenbanken 2 07.03.2006 21:26
Probleme mit Script PHP Tipps 2006 16 25.02.2006 00:00
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
Hilfe bei Bilderupload Script ypsie PHP Tipps 2005 15 09.05.2005 18:58
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
Script für Bilderupload PHP-Fortgeschrittene 11 02.02.2005 10:49
probleme mit script PHP Tipps 2005 0 26.01.2005 17:53
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
Script probleme! PHP Tipps 2004 2 05.10.2004 19:36
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
imagecreatefromjpeg funktioniert nicht, imagecreatefromjpeg bricht ab, imagecreatefromjpeg 1und1, php imagecreatefromjpeg, 1und1 imagecreatefromjpeg, imagecreatefromjpeg speicher, php imagecreatefromjpeg geht nicht, imagecreatefromjpeg geht nicht, imagecreatefromjpeg 1&1, imagecopyresampled abbruch, imagecreatetruecolor speichern, imagecreatefromjpeg bildgröße, php imagecreatefromjpeg problem, imagecreatefromjpeg speichern, imagecreatefromjpeg größe, php imagecreatefromjpeg funktioniert nicht, imagecreatefromjpeg 1und1 problem, imagecopyresampled 1und1, imagecreatefromjpeg große bilder, probleme mit imagecreatefromjpeg

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:01 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