Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]własna kreacja miniatur
Forum PHP.pl > Forum > Przedszkole
john_doe
Witam,

robie tak: wgrywam plik na serwer do katalogu PICTURESi od razu kopiuje go do katalogu minis.
następnie chce funkcja zamienić tyle co skopiowany obrazek w katalogu minis na miniaturke.

taki mam plik uploadu
  1. <?php
  2. include('configUpload.php'); // w konfigu jest sciezka i max rozmair
  3. include('functions.php');
  4.  
  5. $fileName = $_FILES['myFile']['name'];
  6.  
  7. $fileExtension = substr($fileName, -3);
  8.  
  9. if( ! in_array( $fileExtension, $allowedFileTypes ) )
  10. {
  11.    header( 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/') . '/' . index.'.'.php );
  12.    exit;
  13. }
  14.  
  15.  
  16. if( ! file_exists( $_SERVER['DOCUMENT_ROOT'].'/Mini/Pictures/' . $fileName ) )
  17. {
  18.    if( move_uploaded_file( $_FILES['myFile']['tmp_name'], $uploadPath . $fileName))
  19.    {
  20.        print 'Wgranie pliku zakonczone sukcesem, <a href="' . $uploadPath . $fileName . '" title="Your File">Zobacz</a>';
  21.    }else print 'Pojawil sie problem podczas wgrywania pliku na serwer. Sprobuj ponownie za chwile.';    
  22. }
  23. else {
  24.        print 'Plik o takiej nazwie juz istnieje. Zmien nazwe i spobuj ponownie';
  25.        
  26.    }    
  27.  
  28. copy( 'Pictures/' . $fileName, 'Pictures/minis/' . 'mini_' . $fileName);
  29.  
  30. makeMini('Pictures/minis/' . 'mini_ . $fileName, $fileName);
  31. ?>


plik functions.php

  1. <?php
  2. function makeMini($plik, $nazwa)
  3. {
  4.    $rozmiar = getimagesize($plik);
  5.    $szerokosc = $rozmiar[0];
  6.    $wysokosc = $rozmiar[1];
  7.    $nowa_wysokosc = 258;
  8.    $nowa_szerokosc = $szerokosc*($nowa_wysokosc / $wysokosc);
  9.    $oryginal = ImageCreateFromJPEG($nazwa);
  10.    $obrazek = ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc);
  11.    ImageCopyResized($obrazek,$oryginal,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,$szerokosc,$wysokosc);
  12.    ImageJPEG($obrazek, "Pictures/minis/mini1_" . $nazwa);    
  13. }
  14. ?>


gdy wgrywam plik dostaje cos takiego

Warning: imagecreatefromjpeg(1.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\wamp\www\Mini\functions.php on line 22

Warning: imagecopyresized(): supplied argument is not a valid Image resource in C:\wamp\www\Mini\functions.php on line 24

linia 22 to : $oryginal = ImageCreateFromJPEG($nazwa);

linia 24 to: ImageCopyResized($obrazek,$oryginal,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,$szerokosc,$wysokosc);
erix
Cytat
Warning: imagecreatefromjpeg(1.JPG) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\wamp\www\Mini\functions.php on line 22

Czyli plik źródłowy nie istnieje/nie może zostać odczytany. Sprawdź uprawnienia i ścieżki.
nospor
ImageCreateFromJPEG($nazwa);
przeciez wg. twojego kodu $nazwa to tylko nazwa. pelna sciezka do pliku do $plik
john_doe
rzeczywiście ścieżki były do luftu.
oto kod funkcji, która działa i miniaturuje
  1. <?php
  2. function makeMini($plik, $nazwa)
  3. {
  4.    $rozmiar = getimagesize($plik);
  5.    $szerokosc = $rozmiar[0];
  6.    $wysokosc = $rozmiar[1];
  7.    $nowa_wysokosc = 258;
  8.    $nowa_szerokosc = $szerokosc*($nowa_wysokosc / $wysokosc);
  9.    $oryginal = ImageCreateFromJPEG($nazwa);
  10.    $obrazek = ImageCreateTrueColor($nowa_szerokosc,$nowa_wysokosc);
  11.    ImageCopyResized($obrazek,$oryginal,0,0,0,0,$nowa_szerokosc,$nowa_wysokosc,$szerokosc,$wysokosc);
  12.    ImageJPEG($obrazek, $nazwa);    
  13. }
  14. ?>


chciałbym to teraz tak rozwinąć bym mógł miniaturyzować gify, png. Bo ta funkcja działa tylko na jpg. Jakieś wskazówki?
bemol
  1. <?php
  2. $fileExtension = substr($fileName, -3);
  3. ?>


nie sprawdzaj w ten sposób rozszerzenia, bo dla .jpeg będzie peg! Poza tym łatwo jest zmienić plik .mov, .avi, .rmvb na .jpg. sprawdzaj nagłówki pliku.
w ten sposób możesz sprawdzić switchem rozszerzenie i tworzyć dla innych typów plików

mime_content_type" title="Zobacz w manualu PHP" target="_manual albo http://pl.php.net/manual/pl/ref.fileinfo.php
john_doe
dzięki bemol, racja.
Czy podobnie robi się miniaturki dla gif i png? czy jakieś gorsze cyrki?
erix
O matko, a ciężko zobaczyć w manualu, że są funkcje i do tego, i do tego...? :|
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.