Witam serdecznie (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif) Napisalem skrypta ( prawie ;P ) w oparciu o klase resizeImage, skrypt uploaduje zdjecie, wrzuca na serwer oryginal size i w 2 mniejszych wersjach, ale problem tkwi w tym zeby dopasowywal zdjecie, zeby byly zachowane proporcje czyli np zdefiniowac sama szerokosc na 200 wtedy on dlugosc sam ustawi wedlug wielkosci zdjecia, nie wiem jak to zrobic, szukalem na googlach o tej proporcjonalnosci ale nic nie znalazlem, oczywiscie moglem zle szukac, niech ktos mnie poprawi (IMG:
http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
nizej caly skrypt co i jak (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif)
prosze o pomoc
<?php
if($opcja == 'form')
{
<form enctype="multipart/form-data"
method="post" action="?send=Wyslij">
<input name="src
" type="file"> <br><input type="submit
" value="Wyslij
" name="send
"><input type="reset" value="Kasuj
" name="B2
"></form> ";
}
if($send == 'Wyslij') {
$strUploadDir = 'images/artist/' . $_FILES['src']['name'];
$strUploadDir2 = 'images/artist/th_' . $_FILES['src']['name'];
$strUploadDir3 = 'images/artist/th2_' . $_FILES['src']['name'];
function imgType($name)
{
if(substr($name, -4, 4) == '.jpg' || substr($name, -4, 4) == 'jpeg') {
return "IMAGETYPE_JPEG";
}
elseif(substr($name, -4, 4) == '.gif') {
return "IMAGETYPE_GIF";
}
elseif(substr($name, -4, 4) == '.png') {
return "IMAGETYPE_PNG";
}
}
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(imgType($source) == "IMAGETYPE_JPEG")
{
$img_src = imagecreatefromjpeg($source);
}
elseif(imgType($source) == "IMAGETYPE_GIF")
{
$img_src = imagecreatefromgif($source);
}
elseif(imgType($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(imgType($save_image) == "IMAGETYPE_JPEG")
{
imagejpeg($new_img, $save_image, 100);
}
elseif(imgType($save_image) == "IMAGETYPE_GIF")
{
imagegif($new_img, $save_image);
}
elseif(imgType($save_image) == "IMAGETYPE_PNG")
{
imagepng($new_img, $save_image);
}
}
resizeImage($strUploadDir, 200, 100, $strUploadDir2, 100);
echo'<img src="'.$strUploadDir2.'" alt="">';
resizeImage($strUploadDir, 100, 80, $strUploadDir3, 100);
echo'<img src="'.$strUploadDir3.'" alt="">';
}
?>
dzieki za pomoc (IMG:
http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
pozdrawiam (IMG:
http://forum.php.pl/style_emoticons/default/exclamation.gif) (IMG:
http://forum.php.pl/style_emoticons/default/smile.gif)
Ten post edytował bumfank 8.08.2005, 23:17:17