Witam,
Mam problem z tym skryptem. Jest to skrypt z pierwszego postu zmodyfikowany poprzez dodanie osobnego katalogu na miniaturki. I wlasnie w tym problem. Jesli katalog $dir i $dir_mini są jednakowe i wskazuja na docelowe miejsce uploadu duzego pliku to miniatura jest tworzona. Problem tylko w tym, ze jest tworzona w miejsce duzego pliku. Calosc wyglada tak:
<?php
$dir = './obrazki/';
$dir_mini = './mini/';
function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
{
/*
* source - obrazek jpeg
* max_x - maksymalna szerokosc pomniejszonego obrazka
* max_y - maksymalna dlugosc pomniejszonego obrazka
* save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
* jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
*/
if(exif_imagetype($source) == IMAGETYPE_JPEG)
{
$img_src = imagecreatefromjpeg($source);
}
elseif(exif_imagetype($source) == IMAGETYPE_GIF)
{
$img_src = imagecreatefromgif($source);
}
elseif(exif_imagetype($source) == IMAGETYPE_PNG)
{
$img_src = imagecreatefrompng($source);
}
else
{
die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG'); }
$image_x = imagesx($img_src);
$image_y = imagesy($img_src);
if($image_x > $image_y) // Landscape
{
$ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
$ratio_y = $ratio_x;
$move = 'y';
}
else // Portrait
{
$ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
$ratio_x = $ratio_y;
$move = 'x';
}
$new_x = $image_x*$ratio_x;
$new_y = $image_y*$ratio_y;
$move_x = ($move == "x") ? ($max_x-$new_x)/2 : 0;
$move_y = ($move == "y") ? ($max_y-$new_y)/2 : 0;
$new_img = imagecreatetruecolor($max_x, $max_y);
$background = imagecolorallocate($new_img, 255, 255, 255);
imagefill($new_img, 0, 0, $background);
imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
if(exif_imagetype($save_image) == IMAGETYPE_JPEG)
{
imagejpeg($new_img, $save_image, $jpeg_quality);
}
elseif(exif_imagetype($save_image) == IMAGETYPE_GIF)
{
imagegif($new_img, $save_image);
}
elseif(exif_imagetype($save_image) == IMAGETYPE_PNG)
{
imagepng($new_img, $save_image);
}
echo '<img src="'.$save_image.'" border="1">'; }
list
($width, $height) = getimagesize($_FILES['img']['tmp_name']);
// sprawdzamy czy podany plik zostal odebrany
$nazwa_pliku=$_FILES['img']['name'];
// wyciagamy rozszrzenie skopiowanego pliku
if($rozsz[1]=="gif" || $rozsz[1]=="jpg" || $rozsz[1]=="jpeg" || $rozsz[1]=="png" || $rozsz[1]=="JPG" || $rozsz[1]=="JPEG") {
move_uploaded_file($_FILES['img']['tmp_name'], 'obrazki/' . $_FILES['img']['name']) or
die('Error moving image...'); $file=$_FILES['img']['name'];
resizeImage($dir . $file, 100, 100, $dir_mini . $file, 75);
} else {
echo "Niewlasciwy format pliku!"; }
}
?>
Nie wiem co moglem zrobic zle bo juz kombinowalem na wszystkie sposoby i zmienialem chyba prawie wszystko. Wykonanie powyzszego kodu wyswietla:
Warning: exif_imagetype(./mini/DSCK0051.JPG): failed to open stream: No such file or directory in /testowy/upload.php on line 57
Warning: exif_imagetype(./mini/DSCK0051.JPG): failed to open stream: No such file or directory in /testowy/upload.php on line 61
Warning: exif_imagetype(./mini/DSCK0051.JPG): failed to open stream: No such file or directory in /testowy/upload.php on line 65
Ok, juz sobie poradzilem. Dziala drugi kod, ten bez exif
Ten post edytował MalyKazio 5.06.2006, 11:58:41