Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana rozmaru *.jpg
Forum PHP.pl > Forum > Przedszkole
geogis
czy istnieje w php mozliwość zmiany rozmiarow zdjecia (szer. i wys.) ktory jest już na serwerze i zapisanie go jako osobnego pliku?questionmark.gif
Leezard
ano istnieje, poszukaj na forum, bylo juz kilka tematow o tym

poza tym ta sekcja manuala

imagecreatefrom* itd...
darkspirit
  1. <?php
  2. /**
  3. *  Funckja generuje miniaturki z obrazków o typie gif, jpeg, png i zapisuje je w
  4. *  formatach gif, jpg lub png. Pamiętajmy, że apache potrzebuje prawa do zapisu,
  5. *  do katalogu, w którym chcemy stworzyć miniaturkę. Oczywiście proporcje zostaj
  6.  
  7. * zachowane. Jednym słowem zlepek z manuala;)
  8. *
  9. *  @author darkspirit <darkspirit@strefaphp.net>
  10. *  @copyright copyLeft
  11. *  @version 1.0-rc1
  12. *  @link http://strefaphp.net
  13. *  @param string $name nazwa obrazka, który chcemy pomniejszyć
  14. *  @param string $newName nazwa nowo utworzonego obrazka
  15. *  @param string $newType rozszerzenie dla nowego obrazka(gif,jpg,png)
  16. *  @param integer $maxWidth maksymalna szerokość nowego obrazka
  17. *  @param integer $maxHeight maksymalna wysokość nowego obrazka
  18. *  @return boolen
  19. */
  20. function makeMiniature($name,$newName,$newType,$maxWidth,$maxHeight)
  21. {
  22.    /**
  23.    *  zwraca szerokość, wysokość, typ obrazka i tekst zawierający dane o
  24.    *  wysokości i szerokości
  25.    */
  26.    list($width, $height, $type, $attr) = getimagesize($name);
  27.  
  28.    /**
  29.    *  układamy proporcje do uzyskania proporcjonalnej wielkośći miniaturki
  30.    */
  31.    if ($width > $height)
  32.    {
  33.       $newWidth = $maxWidth;
  34.       $newHeight = round(($maxWidth * $height) / $width);
  35.    }
  36.    else
  37.    {
  38.       $newHeight = $maxHeight;
  39.       $newWidth = round(($maxHeight * $width) / $height);
  40.    }
  41.  
  42.    /**
  43.    *  otwieramy stary obrazek
  44.    */
  45.    switch($type)
  46.    {
  47.       case 1 : $im=@imagecreatefromgif($name);
  48.               break;
  49.       case 2 : $im=@imagecreatefromjpeg($name);
  50.               break;
  51.       case 3 : $im=@imagecreatefrompng($name);
  52.               break;
  53.    }
  54.  
  55.    /**
  56.    *  tworzymy nowy obrazek o wielkośći jaką będzie miała miniaturka
  57.    */
  58.    $small = imagecreatetruecolor($newWidth,$newHeight);
  59.  
  60.    /**
  61.    *  przenosimy stary obrazek do nowego, zmiejszając go odpowiednio
  62.    */
  63.    ImageCopyResampled($small, $im, 0, 0, 0, 0, $newWidth, $newHeight,$width, $height);
  64.  
  65.    /**
  66.    *  zwalniamy pamięć
  67.    */
  68.    ImageDestroy($im);
  69.  
  70.    /**
  71.    *  próbujemy zapisać obrazek
  72.    */
  73.    switch($newType)
  74.    {
  75.       case 'gif' : $made = ImageGif($small,$newName);
  76.               break;
  77.       case 'jpg' : $made = ImageJPEG($small,$newName);
  78.               break;
  79.       case 'png' : $made = ImagePNG($small,$newName);
  80.    }
  81.  
  82.    /**
  83.    *  odpowiednio dla tego czy nam się udało czy nie
  84.    */
  85.    if ($made === TRUE)
  86.    { // success
  87.       echo &#092;"File <u>$newName</u> has been written<br>n\";
  88.       echo &#092;"size: \".$newWidth.\"x\".$newHeight.\"<br>n\";
  89.    }
  90.    else
  91.    { // failed to write file
  92.       echo &#092;"<font color=red><b>\";
  93.       echo &#092;"Error ! File has not been written.\";
  94.       echo &#092;"</b></font><br>n\";
  95.    }
  96.    return $made;
  97. } #end function makeMiniature
  98.  
  99. #makeMiniature('wooki.jpg','saas.png','png',200,50);
  100.  
  101. ?>


<edit>
proporcje są zachowane smile.gif

paps
NuLL
A to ja się podlącze - funkcje, które przeskalowują obrazek zachowując proporcje - pierwsa wg. wysokosci, druga wg. szerokosci.
Pierwszy arg - nazwa pliku zrodła, drugi - plik wynikowy, trzeci oczekiwana wysokość, czwarte jakość. Następna podobnie z tym, że trzecia to oczekiwana szerokośc. GD nie daję możliwośći zapisu gif-a tak więc jest konwertowany do jpg-a.
  1. <?php
  2.  
  3.     function create_thumb_hfixed($file_name_src, $file_name_dest, $height, $quality=100)
  4.     {
  5.        if (file_exists($file_name_src)  && isset($file_name_dest))
  6.        {
  7.            $est_src = pathinfo(strtolower($file_name_src));
  8.            $est_dest = pathinfo(strtolower($file_name_dest));
  9.            $size = getimagesize($file_name_src);
  10.            $h = number_format($height, 0, ',', '');
  11.            $w = number_format(($size[0]/$size[1])*$height,0,',','');
  12.            if ($est_dest['extension'] == &#092;"gif\" || $est_dest['extension'] == \"jpg\")
  13.            {
  14.                $file_name_dest = substr_replace($file_name_dest, 'jpg', -3);
  15.                $dest = imagecreatetruecolor($w, $h);
  16.                imageantialias($dest, TRUE);
  17.            } elseif ($est_dest['extension'] == &#092;"png\")
  18.            {
  19.                $dest = imagecreatetruecolor($w, $h);
  20.                imageantialias($dest, TRUE);
  21.            } else
  22.            {
  23.               return FALSE;
  24.            }
  25.            switch($size[2])
  26.            {
  27.            case 1:       //GIF
  28.                $src = imagecreatefromgif($file_name_src);
  29.                break;
  30.            case 2:       //JPEG
  31.                $src = imagecreatefromjpeg($file_name_src);
  32.                break;
  33.            case 3:       //PNG
  34.                $src = imagecreatefrompng($file_name_src);
  35.                break;
  36.            default:
  37.                return FALSE;
  38.                break;
  39.            }
  40.            imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
  41.  
  42.            switch($size[2])
  43.            {
  44.            case 1:
  45.            case 2:
  46.                imagejpeg($dest,$file_name_dest, $quality);
  47.                break;
  48.            case 3:
  49.                imagepng($dest,$file_name_dest);
  50.            }
  51.            return TRUE;
  52.        }
  53.        return FALSE;
  54.     }
  55.  
  56.  
  57.     function create_thumb_wfixed($file_name_src, $file_name_dest, $weight,$quality=100)
  58.     {
  59.        if (file_exists($file_name_src)  && isset($file_name_dest))
  60.        {
  61.            $est_src = pathinfo(strtolower($file_name_src));
  62.            $est_dest = pathinfo(strtolower($file_name_dest));
  63.            $size = getimagesize($file_name_src);
  64.            $w = number_format($weight, 0, ',', '');
  65.            $h = number_format(($size[1]/$size[0])*$weight,0,',','');
  66.  
  67.            if ($est_dest['extension'] == &#092;"gif\" || $est_dest['extension'] == \"jpg\")
  68.            {
  69.                $file_name_dest = substr_replace($file_name_dest, 'jpg', -3);
  70.                $dest = imagecreatetruecolor($w, $h);
  71.                imageantialias($dest, TRUE);
  72.            } elseif ($est_dest['extension'] == &#092;"png\")
  73.            {
  74.                $dest = imagecreatetruecolor($w, $h);
  75.                imageantialias($dest, TRUE);
  76.            } else
  77.            {
  78.               return FALSE;
  79.            }
  80.            switch($size[2])
  81.            {
  82.            case 1:       //GIF
  83.                $src = imagecreatefromgif($file_name_src);
  84.                break;
  85.            case 2:       //JPEG
  86.                $src = imagecreatefromjpeg($file_name_src);
  87.                break;
  88.            case 3:       //PNG
  89.                $src = imagecreatefrompng($file_name_src);
  90.                break;
  91.            default:
  92.                return FALSE;
  93.                break;
  94.            }
  95.            imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
  96.  
  97.            switch($size[2])
  98.            {
  99.            case 1:
  100.            case 2:
  101.                imagejpeg($dest,$file_name_dest, $quality);
  102.                break;
  103.            case 3:
  104.                imagepng($dest,$file_name_dest);
  105.            }
  106.            return TRUE;
  107.        }
  108.        return FALSE;
  109.     }
  110.  
  111. ?>
geogis
ok dzieki wielkie. pomogliscie mi bardzo.
jeszcze tylko jedno pytanko:
jezeli zmniejszam jpg-a ktory ma "niestandardowe" proporcje to wtedy albo po bokach albo na gorze i na dole tworzy sie bialy pasek. Wiem z czego to wynika. Ale czy nie da sie tak zeby sie tego pozbyc?questionmark.gif
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.