Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem przy tworzeniu miniatur obrazow.
Forum PHP.pl > Forum > PHP
bikerszymek
Witam serdecznie mam problem z moim skryptem, ktory w planach mial robic upload plikow graficznych a nastepnie zmieniejszac je do rozmiarow wygodnych dla uzytkownika ogladajacego galerie oraz tworzc miniatury zdjec.Co prawda tworzy pliki jpeg o podanych nowych rozmiarach (normalne i miniatury) ale wszystkie maja biale tlo, w dodatku wywala to: (wiem ze to jest powodem tego ze obrazki sa puste bo przeciez imagecopyresampled przekopiwuje z jednego do drugiego):

Warning
: imagecopyresampled(): supplied argument is not a valid Image resource in /.../ on line 53

Oto kod:
CODE

<?
// tworzenie krotkich nazw zmiennych
$plik_tmp = $_FILES['plik']['tmp_name'];
$plik_nazwa = $_FILES['plik']['name'];
$plik_rozmiar = $_FILES['plik']['size'];
$plik_typ = $_FILES['plik']['type'];
$katalog = $_POST['katalog'];
$plik = $_POST['plik'];

// nowe katalogi
@ mkdir('images/galeria/'.$katalog, 0777);
@ mkdir('images/galeria/'.$katalog.'/mini', 0777);

$plik_nazwa = $katalog.rand(0,99999999).'.jpeg';

// upload na serwer
{
if(!file_exists($plik_nazwa))
{
if(is_uploaded_file($plik_tmp))
{
$album = 'images/galeria/'.$katalog;
move_uploaded_file($plik_tmp, 'images/galeria/tmp/'.$plik_nazwa);
$mode = '777';
$filename = 'images/galeria/tmp/'.$plik_nazwa;
$mode_dec = octdec($mode);
chmod($filename, $mode_dec);

$obraz1 = $filename;
$obraz = imagecreatefromjpeg("$plik");

list($aheight, $awidth) = getimagesize("$filename"); // odczytywanie wielkosci obrazka

if ( $aheight > 800 || $awidth > 600 )

{
if ($aheight > 800)
{
$nheight = 800;
$nwidth = ceil($nheight * ($aheight / $awidth));
}
elseif ($awidth > 600)
{
$nwidth = 600;
$nheight = ceil($nwidth * ($awidth / $aheight));
}

$obraz2 = imagecreatetruecolor( $nwidth, $nheight );
$background = imagecolorallocate($obraz2, 255, 255, 255);
imagefill($obraz2, 0, 0, $background);
imagecopyresampled( $obraz2, $obraz, 0, 0, 0, 0, $nwidth, $nheigth, $awidth, $aheight );

$awidth = $nwidth;
$aheight = $nheight;

}
else
{
$nwidth = $awidth;
$nheight = $aheight;
}

if ( $nwidth/$nheight > $nheight/$nwidth )
{ // poziomo

$mwidth = 120;
$mheight = 90;

$obraz_mini = imagecreatetruecolor( $mwidth, $mheight );
imagecopyresampled( $obraz_mini, $obraz2, 0, 0, 0, 0, $mwidth, $mheight, $awidth, $aheight );

}else
{ // pionowo

$mwidth = 90;
$mheight = 120;

$obraz_mini = imagecreatetruecolor( $mwidth, $mheight );
imagecopyresampled( $obraz_mini, $obraz2, 0, 0, 0, 0, $mwidth, $mheight, $awidth, $aheight );
}

// zapis
$plk = fopen ('images/galeria/'.$plik_nazwa, "w");
ob_start();
imagejpeg( $obraz2, 'images/galeria/'.$plik_nazwa, 100 );
fwrite($plk, ob_get_contents());
ob_end_clean();
fclose($plk);

$plk1 = fopen ('images/galeria/mini_'.$plik_nazwa, "w");
ob_start();
imagejpeg( $obraz_mini,'images/galeria/mini_'.$plik_nazwa, 100 );
fwrite($plk1, ob_get_contents());
ob_end_clean();
fclose($plk1);



}
else
{
echo 'Problem: Plik nie moze byc skopiowany do katalogu';
exit;
}
}
else echo 'Plik o takiej nazwie istnieje';
}
?>


Prosze o zerkniecie na kod oraz o propozycje zmian aby to w koncu zaczelo dzialac bo mecze sie z tym juz dobrych kilka dni.
Babcia@Stefa
Z tego co widać do funkcji nie jest dostarczany wygenerowany obrazek, po sprawdzaj funkcją is_resource()" title="Zobacz w manualu PHP" target="_manual w jakich miejscach jest obrazek.

Pozdrawiam.
bikerszymek
Dziekuje badzo za odpowiedz ale doslowanie przed chwila sobie z tym poradzilem:)

Temat do zamkniecia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.