Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skalowanie obrazka i jego zapis
wgrzelak
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


No więc mój problem polega na tym że mam upload obrazka i potrzebuje żeby obrazek się skalował i zapisywał proporcjonalnie i żeby była funkcja utraty jakosci.

  1. <?php
  2. $userfile = $_FILES["userfile"];
  3. $uploadfile = $GLOBALS["uploaddir"] . "".$hash.".jpg";
  4. $image_types = Array ("image/bmp","image/jpeg", "image/pjpeg","image/gif","image/x-png");
  5. $file_name = "".$hash.".jpg";
  6. $file_size = $_FILES["userfile"]["size"];
  7. $file_type = $_FILES["userfile"]["type"];
  8. $file_size = makesize1($file_size);
  9.  
  10. if (isset($_FILES["userfile"]))
  11. {
  12. if (!$file_name)
  13. {
  14. // do nothing...
  15. }
  16. else
  17. {
  18. if ($file_size > $GLOBALS["file_limit"])
  19. {
  20. err_msg (ERROR,FILE_UPLOAD_TO_BIG."$file_limit KB, ".IMAGE_WAS." $file_size");
  21. blocksx_end();
  22. stdfoot();
  23. }
  24. if (in_array (strtolower ($file_type), $image_types, TRUE))
  25. {
  26. if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
  27. {
  28. echo"<center>Upload obrazka pomyślny</center><br />";
  29. }
  30. else
  31. {
  32. err_msg (ERROR,MOVE_IMAGE_TO.$GLOBALS["uploaddir"].$file_name.CHECK_FOLDERS_PERM);
  33. blocksx_end();
  34. stdfoot();
  35. }
  36. }
  37. else
  38. {
  39. err_msg (ERROR,ILEGAL_UPLOAD);
  40. blocksx_end();
  41. stdfoot();
  42. }
  43. }
  44. }
  45. ?>


Ten post edytował wgrzelak 26.12.2007, 21:49:43
Go to the top of the page
+Quote Post
czachor
post
Post #2





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


imagecopyresampled(), od razu są przykłady
Go to the top of the page
+Quote Post
wgrzelak
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


a mógł by ktoś dać troche więcej niz link bo ja to wcześniej czytałem i nic nie pomogło bardzo bym prosił o gotowca
Go to the top of the page
+Quote Post
dadexix
post
Post #4





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $filename = //nazwa pliku
  3. $nowy_ser = //szerkosc tego co ma wyjsc docelowo
  4. $nowy_wys = //wysokosc docelowego
  5. $rozmiar = getimagesize('obraz.jpg');
  6. $monoznik = $rozmiar[0]/$nowy_szer;
  7. $monoznik2 = $rozmiar[1]/$nowy_wys;
  8. if($mnoznik2 == $mnoznik){
  9. $newwidth = $rozmiar['0']*$mnoznik;
  10. $newheight = $rozmiar['1']*$mnoznik2;
  11. $source = imagecreatefromjpeg($filename);
  12. imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $rozmiar[0], $rozmiar[1]);
  13.  
  14. }
  15. ?>


tak to na moje oko:P pewnie nie działa..

robi nowy obrazek z zachowaniem proporcji i ten obrazek nie jest większy niż ustalona wysokosc/szerokość
Go to the top of the page
+Quote Post
wgrzelak
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


to niestety nie działa...
Go to the top of the page
+Quote Post
czachor
post
Post #6





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przecież w linku do manuala, który podałem, jest mnóstwo przykładów. Zajrzyj, wybierz odpowiedni i dostosuj do swojego skryptu.
Go to the top of the page
+Quote Post
wgrzelak
post
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


ale mi nie wychodzi naprawde sobie nie poradze (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
czachor
post
Post #8





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No to napisz, co Ci nie wychodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Skrypt generuje miniaturkę i masz ją tylko zapisać do pliku. W którym miejscu nie radzisz sobie?
Go to the top of the page
+Quote Post
wgrzelak
post
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


ogólnie czy to tak cięszko wkleić jak ma to wyglądać (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) po za tym chcę mieć porządnie zrobione (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
dadexix
post
Post #10





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


Cytat
to niestety nie działa...
no teraz patrze... nie może dzialać;p(w jendnym miejscu nazwie zmiennej brak literki "z") sprawdzić tego jak nie mam ale literówkę widzę;] nie możesz zawsze sądzić że ten kto daje przykład jest nie omylny... do tego musisz doać jeszcze pare rzeczy(np. imagejpg" title="Zobacz w manualu PHP" target="_manual) i sprawdzić czy nie ma blędów

Ten post edytował dadexix 26.12.2007, 23:09:26
Go to the top of the page
+Quote Post
wgrzelak
post
Post #11





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 22.12.2007

Ostrzeżenie: (0%)
-----


i ja nadal nie wiem co mam zrobic (IMG:http://forum.php.pl/style_emoticons/default/dostal.gif)
Go to the top of the page
+Quote Post
Nattfarinn
post
Post #12





Grupa: Zarejestrowani
Postów: 136
Pomógł: 22
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Dane wejściowe:
Kod
$imageFile - plik wejściowy (np. $_FILES["plik"]["tmp_name"])
$maxImageWidth - maksymalna szerokość obrazka wyjściowego (np. '100')
$maxImageHeight - maksymalna wysokość obrazka wyjściowego (np. '80')
$newImageName - nazwa pliku wyjściowego (bez rozszerzenia .jpg) (np. "miniatura")
$imageQuality - jakość obrazka wyjściowego (zakres 1..100) (np. '80')


  1. <?php
  2.  
  3. $imageData = imagecreatefromjpeg($imageFile);
  4. list($imageWidth, $imageHeight) = getimagesize($imageFile);
  5. $imageRatioWidth = $imageWidth > $maxImageWidth ? $maxImageWidth / $imageWidth : 1;
  6. $imageRatioHeight = $imageHeight * $imageRatioWidth > $maxImageHeight ? $maxInameHeight / $imageHeight : 1;
  7. $newImageSizeWidth = floor($imageWidth * $imageRatioWidth * $imageRatioHeight);
  8. $newImageSizeHeight = floor($imageHeight * $imageRatioWidth * $imageRatioHeight);
  9. $newImage = imagecreatetruecolor($newImageSizeWidth, $newImageSizeHeight);
  10. imagecopyresampled($newImage, $imageData, 0, 0, 0, 0, $newImageSizeWidth, $newImageSizeHeight, $imageWidth, $imageHeight);
  11. $savePath = $newImageName.".jpg";
  12. imagejpeg($newImage, $savePath, $imageQuality);
  13.  
  14. ?>


Maksymalny rozmiar docelowy ($maxImageWidth i $maxImageHeight) to właściwie rozmiar pliku który chcesz uzyskać po zmianie rozmiaru z tą tylko różnicą, że jeśli grafika wejściowa będzie mniejsza niż wyjściowa, nie ulegnie zmianie (zapobiega rozciąganiu małych obrazków).

Ten post edytował Nattfarinn 27.12.2007, 16:00:21
Go to the top of the page
+Quote Post
andrew1985
post
Post #13





Grupa: Zarejestrowani
Postów: 48
Pomógł: 4
Dołączył: 28.12.2007

Ostrzeżenie: (0%)
-----


Tu masz moją funkcję która to robi:
Opis paramterów:
$img_name = nazwa pliku (np. obraz.jpg)
$photo_dir = katalog z plikiem
$thumb_dir = katalog so którego zostanie zapisany przekonwertowany plik
$max_width = maksymalna szerokosc
$max_height = maksymalna wysokosc
$proportion=false = czy ma zachowac proporcje czy nie - w twoim przypadku true

W przypadku prawidłowego skonwertowania obrazka zwraca ściezke do niego.

Kod
function ImageConvert($img_name,$photo_dir,$thumb_dir, $max_width,$max_height,$proportion=false){
    $img_path = $photo_dir.$img_name;
    $thumb_path = $thumb_dir.$img_name;
    
    if(file_exists($img_path)) {
        $img_attr = getimagesize($img_path);
        
        if($proportion){
            if($img_attr[0]>$img_attr[1])
                $scale = $img_attr[0] / $max_width;
            else $scale = $img_attr[1] / $max_height;
            
            $w = floor($img_attr[0]/$scale);
            $h = floor($img_attr[1]/$scale);
        }else{
            $w = $max_width;
            $h = $max_height;
        }
        
        $thumb = imagecreatetruecolor($w,$h);
        
        $result = @imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);        
        if($result)
            @imagejpeg($thumb,$thumb_path,85);

        if($result) return $thumb_path; else return $result;
    } else return -1;
}
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 23:30