Zwarte thumbnails
sjemmie - 21/05/2005 19:46 (laatste wijziging 22/05/2005 12:56)
Nieuw lid
Wat doe ik hier fout ?
Zodra ik bestanden upload en er thumbnails van probeer te maken blijken ze zwart te zijn
<? $file = $pad.$doelbestandsnaam;
$tempfile = $pad.'s'.$doelbestandsnaam;
$newfile = $pad.'t'.$doelbestandsnaam;
copy($file, $tempfile); //nieuw bestand aangemaakt
//resize tijd
// Load
list($width, $height) = getimagesize($file);
$thumb = imagecreatetruecolor(100, 100);
$source = imagecreate(100,100);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, 100, 100, $width, $height);
$file2 = $file .'.tmp';
imagejpeg($thumb, $file2);
rename ($file2,$newfile);
if (file_exists($tempfile)) { unlink ($tempfile); }
echo "<br>Het bestand ".$_FILES['afbeelding'.$i]['name']." is toegevoegd.";
}
?>
<? $file = $pad . $doelbestandsnaam ;
$tempfile = $pad . 's' . $doelbestandsnaam ;
$newfile = $pad . 't' . $doelbestandsnaam ;
copy ( $file , $tempfile ) ; //nieuw bestand aangemaakt //resize tijd
// Load
$thumb = imagecreatetruecolor( 100 , 100 ) ;
$source = imagecreate( 100 , 100 ) ;
// Resize
imagecopyresized( $thumb , $source , 0 , 0 , 0 , 0 , 100 , 100 , $width , $height ) ;
$file2 = $file . '.tmp' ;
imagejpeg( $thumb , $file2 ) ;
echo "<br>Het bestand " . $_FILES [ 'afbeelding' . $i ] [ 'name' ] . " is toegevoegd." ;
}
?>
18 antwoorden
Gesponsorde links
TFOL - 21/05/2005 20:07 (laatste wijziging 21/05/2005 20:07)
PHP beginner
zet is error_reporting(E_ALL); bovenaan in je script, misschien geeft hij dan een error. En chmod je bestand is, zo dat je de rehten krijgt het bestand te wijzigen.
zoiets dus:
<?php
error_reporting(E_ALL);
$file = $pad.$doelbestandsnaam;
$tempfile = $pad.'s'.$doelbestandsnaam;
$newfile = $pad.'t'.$doelbestandsnaam;
copy($file, $tempfile); //nieuw bestand aangemaakt
//resize tijd
// Load
chmod($file, 0777);
list($width, $height) = getimagesize($file);
$thumb = imagecreatetruecolor(100, 100);
$source = imagecreate(100,100);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, 100, 100, $width, $height);
$file2 = $file .'.tmp';
imagejpeg($thumb, $file2);
rename ($file2,$newfile);
if (file_exists($tempfile)) { unlink ($tempfile); }
echo "<br>Het bestand ".$_FILES['afbeelding'.$i]['name']." is toegevoegd.";
}
?>
<?php
$file = $pad . $doelbestandsnaam ;
$tempfile = $pad . 's' . $doelbestandsnaam ;
$newfile = $pad . 't' . $doelbestandsnaam ;
copy ( $file , $tempfile ) ; //nieuw bestand aangemaakt //resize tijd
// Load
$thumb = imagecreatetruecolor( 100 , 100 ) ;
$source = imagecreate( 100 , 100 ) ;
// Resize
imagecopyresized( $thumb , $source , 0 , 0 , 0 , 0 , 100 , 100 , $width , $height ) ;
$file2 = $file . '.tmp' ;
imagejpeg( $thumb , $file2 ) ;
echo "<br>Het bestand " . $_FILES [ 'afbeelding' . $i ] [ 'name' ] . " is toegevoegd." ;
}
?>
SlashDotCom - 21/05/2005 20:10
Lid
Kheb dit probleem ook gehad met een script vanop sitemasters.
Er zat ergens een fout waardoor hij de dir niet kon uitlezen.
Miss dat je hier ook met die fout zit?
sjemmie - 21/05/2005 20:12 (laatste wijziging 21/05/2005 20:13)
Nieuw lid
gedaan, geen errors en ik chmod het ook
chmod ($pad.$doelbestandsnaam, 0777);
TFOL - 21/05/2005 20:14
PHP beginner
doet hij het nu wel of niet?
sjemmie - 21/05/2005 20:19
Nieuw lid
hij doet het dus niet, ik blijf zwarte thumbnails behouden
TFOL - 21/05/2005 20:24
PHP beginner
verander
-imagecreate is in imagecreatefromjpg
-imagecopyresized is in imagecopyresampled
sjemmie - 21/05/2005 20:27 (laatste wijziging 22/05/2005 12:55)
Nieuw lid
ja maar als ik een .gif bestand wil uploaden krijg ik een warning
Warning: Wrong parameter count for imagecreatefromjpeg() in /www/cms/upload3.php on line 46
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /www/cms/upload3.php on line 49
En de thumbnails blijven zwart
TFOL - 21/05/2005 20:31
PHP beginner
maar als je een jpg-file upload doet hij het wel?
probeer het anders is met gewoon imagecreate zoals je eerst had, maar wel met die imagecopyresampled
sjemmie - 21/05/2005 20:35 (laatste wijziging 21/05/2005 20:36)
Nieuw lid
nee ook met jpg bleef het zwart
en helaas ook met imagecopyresampled alleen als wijziging.
schien ligt het gewoon aan die code ofzo dat er nog een extra functie erbij hoort, 1 die kleuren bijbrengt ofzo ?
SlashDotCom - 21/05/2005 20:42
Lid
heb je die thumbnail al verwijderd nadat je de code hebt willen aanpassen?
sjemmie - 21/05/2005 20:45
Nieuw lid
jep
TFOL - 21/05/2005 20:46 (laatste wijziging 21/05/2005 20:47)
PHP beginner
@slashdotcom:
er staat toch if(file_excists($tempfile)) { unlink($tempfile); }
en unlink verwijderd t bestand
@sjemmie:
je moet somige var's wel ffies aanpassen
<?php
if(isset($_POST['uploaden']))
{
$tmp_bestand = $_FILES[$i]['tmp_name'];
$bestand = $_FILES[$i]['name'];
move_uploaded_file($tmp_bestand, $dir."/".$bestand);
chmod ($dir."/".$bestand, 0777);
$bron = imagecreate($dir."/".$bestand) or die ("Jpg probleempje");
$b_breedte = imagesx($bron); // Bron breedte
$b_hoogte = imagesy($bron); // bron hoogte
//verhouding berekenen
$verhouding = $b_breedte / $max_breedte;
//breedte berekenen en afronden
$nieuw_breedte = round($b_breedte / $verhouding);
//hoogte berekenen en afronden
$nieuw_hoogte = round($b_hoogte / $verhouding);
if ($b_breedte > $max_breedte) {
$nieuw_jpg = imagecreatetruecolor($nieuw_breedte ,$nieuw_hoogte) or die ("Probleem met maken van plaatje jpg");
imagecopyresampled($nieuw_jpg, $bron, 0, 0, 0, 0, $nieuw_breedte, $nieuw_hoogte, $b_breedte, $b_hoogte);
Imagejpeg($nieuw_jpg,$dir."/".$bestand,120); //120 is jpg kwaliteit
} // einde resizen
} // einde if 'uploaden'
?>
<?php
if ( isset ( $_POST [ 'uploaden' ] ) ) {
$tmp_bestand = $_FILES [ $i ] [ 'tmp_name' ] ;
$bestand = $_FILES [ $i ] [ 'name' ] ;
chmod ( $dir . "/" . $bestand , 0777 ) ;
$bron = imagecreate
( $dir . "/" . $bestand ) or
die ( "Jpg probleempje" ) ; $b_breedte = imagesx( $bron ) ; // Bron breedte
$b_hoogte = imagesy( $bron ) ; // bron hoogte
//verhouding berekenen
$verhouding = $b_breedte / $max_breedte ;
//breedte berekenen en afronden
$nieuw_breedte = round ( $b_breedte / $verhouding ) ;
//hoogte berekenen en afronden
$nieuw_hoogte = round ( $b_hoogte / $verhouding ) ;
if ( $b_breedte > $max_breedte ) {
$nieuw_jpg = imagecreatetruecolor
( $nieuw_breedte , $nieuw_hoogte ) or
die ( "Probleem met maken van plaatje jpg" ) ; imagecopyresampled( $nieuw_jpg , $bron , 0 , 0 , 0 , 0 , $nieuw_breedte , $nieuw_hoogte , $b_breedte , $b_hoogte ) ;
Imagejpeg( $nieuw_jpg , $dir . "/" . $bestand , 120 ) ; //120 is jpg kwaliteit
} // einde resizen
} // einde if 'uploaden'
?>
dat is het upload en resize gedeelte uit mijn script
sjemmie - 21/05/2005 21:07
Nieuw lid
dat "or die"(error zoveel) is wel handig:
ik krijg een warning als ik van m;n eerdere imagecreate
"$source = imagecreate(100,100);" dit maak: "$source = imagecreate($file);"
Warning: Wrong parameter count for imagecreate() in /www/cms/upload3.php on line 47
error 1
in de functie image create heb je toch je padvermelding nodig en niet de gewenste afmetingen ?
sjemmie - 21/05/2005 21:18 (laatste wijziging 21/05/2005 22:42)
Nieuw lid
ok ik heb de code zo aangepast, maar nu werkt het alleen voor jpg bestanden zonder warnings.
Zodra dit een gif-bestand word krijg ik warnings en een zwarte thumb.
Het ligt echt aan de imagecreatefromjpeg, ik heb het met imagecreate geprobeert maar dan krijg ik zoiezo warnings bij gif en jpgs en zwarte thumbs
<? $file = $pad.$doelbestandsnaam;
$tempfile = $pad.'s'.$doelbestandsnaam;
$newfile = $pad.'t'.$doelbestandsnaam;
copy($file, $tempfile); //nieuw bestand aangemaakt
//resize tijd
// Load
list($width, $height) = getimagesize($tempfile);
$thumb = imagecreatetruecolor(100, 100);
$source = imagecreatefromjpeg($tempfile);
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, 100, 100, $width, $height);
$file2 = $tempfile .'.tmp';
imagejpeg($thumb, $file2);
rename ($file2,$newfile);?>
<? $file = $pad . $doelbestandsnaam ;
$tempfile = $pad . 's' . $doelbestandsnaam ;
$newfile = $pad . 't' . $doelbestandsnaam ;
copy ( $file , $tempfile ) ; //nieuw bestand aangemaakt //resize tijd
// Load
$thumb = imagecreatetruecolor( 100 , 100 ) ;
$source = imagecreatefromjpeg( $tempfile ) ;
// Resize
imagecopyresized( $thumb , $source , 0 , 0 , 0 , 0 , 100 , 100 , $width , $height ) ;
$file2 = $tempfile . '.tmp' ;
imagejpeg( $thumb , $file2 ) ;
vinTage edit : gebruik de edit knop zodat niet heel de topic vol staan met berichten van jou alleen aub
Frederic - 21/05/2005 21:38
PHP ver gevorderde
en welke warnings?
TFOL - 21/05/2005 22:35
PHP beginner
bij imagecreate of imagecreatetruecolor moet je geen bestandnaam inzetten, zoals wat jy doet met $file, maar de breedte en de hoogte (dat is bij jou imagecreate(100, 100);)
een handige site is http://nl2.php....create.php
aan de rechterkant kun je andere functies vinden die te maken hebben bij t maken van thumbnails
sjemmie - 22/05/2005 10:34 (laatste wijziging 22/05/2005 10:40)
Nieuw lid
ok vintage
Ok heren ik ben er bijna
<? chmod ($pad.$doelbestandsnaam, 0777);
$file = $pad.$doelbestandsnaam;
$tempfile = $pad.'s'.$doelbestandsnaam;
$newfile = $pad.'t'.$doelbestandsnaam;
copy($file, $tempfile); //nieuw bestand aangemaakt
//resize tijd
// Load
list($width, $height) = getimagesize($tempfile);
$thumb = imagecreatetruecolor(100, 100)or die("error 1");
if($extensie==".jpg"){ $source = imagecreatefromjpeg($tempfile)or die("error 21");}
if($extensie==".gif"){ $source = imagecreatefromgif($tempfile)or die("error 22");}
if($extensie==".png"){ $source = imagecreatefrompng($tempfile)or die("error 23");}
// else{$source = imagecreatefromjpeg($tempfile)or die("error 24");}
// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, 100, 100, $width, $height);
$file2 = $tempfile .'.tmp';
if($extensie==".jpg"){ imagejpeg($thumb, $file2)or die("error 31");}
if($extensie==".gif"){ imagegif($thumb, $file2)or die("error 32");}
if($extensie==".png"){ imagepng($thumb, $file2)or die("error 33");}
rename ($file2,$newfile);
if (file_exists($tempfile)) { unlink ($tempfile); }
// if (file_exists($newfile)) { unlink ($newfile); }
echo "<br>Het bestand ".$_FILES['afbeelding'.$i]['name']." is toegevoegd.";
echo $file;?>
<? chmod ( $pad . $doelbestandsnaam , 0777 ) ;
$file = $pad . $doelbestandsnaam ;
$tempfile = $pad . 's' . $doelbestandsnaam ;
$newfile = $pad . 't' . $doelbestandsnaam ;
copy ( $file , $tempfile ) ; //nieuw bestand aangemaakt //resize tijd
// Load
$thumb = imagecreatetruecolor
( 100 , 100 ) or
die ( "error 1" ) ; if ( $extensie == ".jpg" ) { $source = imagecreatefromjpeg
( $tempfile ) or
die ( "error 21" ) ; } if ( $extensie == ".gif" ) { $source = imagecreatefromgif
( $tempfile ) or
die ( "error 22" ) ; } if ( $extensie == ".png" ) { $source = imagecreatefrompng
( $tempfile ) or
die ( "error 23" ) ; } // else{$source = imagecreatefromjpeg($tempfile)or die("error 24");}
// Resize
imagecopyresized( $thumb , $source , 0 , 0 , 0 , 0 , 100 , 100 , $width , $height ) ;
$file2 = $tempfile . '.tmp' ;
if ( $extensie == ".jpg" ) { imagejpeg
( $thumb , $file2 ) or
die ( "error 31" ) ; } if ( $extensie == ".gif" ) { imagegif
( $thumb , $file2 ) or
die ( "error 32" ) ; } if ( $extensie == ".png" ) { imagepng
( $thumb , $file2 ) or
die ( "error 33" ) ; } // if (file_exists($newfile)) { unlink ($newfile); }
echo "<br>Het bestand " . $_FILES [ 'afbeelding' . $i ] [ 'name' ] . " is toegevoegd." ;
Ik pas voor elke extensie een andere imagecreate-functie toe.
M'n jpg bestanden zijn normaal maar m'n gif bestanden hebben een zwarte achtergrond IN het plaatje terwijl het plaatje in het gif bestand zelf wel zichtbaar is. De achtergrond wil ik gewoon hebben zoals het oorspronkelijk was.
Moet ik iets wijzigen in imagecopyresized en wat pziez ?
TFOL - 22/05/2005 10:43
PHP beginner
zelf gebruik ik imagecopyresampled. Ik weet niet welke beter is maar ik weet wel dat je dezelfde dingen moet invullen. en dat is bij jou goed
(nieuw_bestand, oud_bestand, 0, 0, 0, 0, nieuw_breedte, nieuw_hoogte, oud_breedte, oud_hoogte);
Gesponsorde links
Dit onderwerp is gesloten .