Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> copy jpg ze skryptu generującego jpga, a może tak się nie da?
hao
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 12.02.2004

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


W poniższym skrypcie:

  1. <?
  2. $katalog="test";
  3.  
  4. if ($handle = opendir($katalog)):
  5. {
  6.  while (false !== ($file = readdir($handle)))
  7.  {
  8.  if ($file != "." && $file != ".." && substr($file, -3,3) == "jpg" && substr($file, 1,2) != "m_" ):
  9.  {
  10.  copy("$katalog/m.php?pic=$file", "$katalog/m_$file");
  11.  }
  12.  endif;
  13.  }
  14. }
  15. endif;
  16. ?>

chcę wszystkie pliki .jpg skopiować do miniaturek. Plik m.php pobiera sobie plik jpg, pomniejsza go, resampluje i na wyjściu wyrzuca już nowego jpega. (sam plik m.php działą bez zarzutu). Jednak w powyższym skrypcie najwyraźniej funkcja copy nie radzi sobie, kiedy nie podaję "normalnej" ścieżki dostępu do jpega, tylko do pliku generującego jpega. Zaznaczam, że skrypt , gdy podam mu normalną scieżkę tj. np.
  1. <?php
  2. copy("sciezka/plik.jpg", "sciezka/nowy.jpg");
  3. ?>

to działa poprawnie.

W moim przypadku zwraca się komunikat:

Warning: copy(test/m.php?pic=test.jpg): failed to open stream: No such file or directory in /var/www/re/index.php on line 12

Podaję również zawartość pliku m.php:
  1. <?php
  2. // pobieram sobie nazwę obrazka do resamplingu ze zmiennej pic
  3. $filename = $_GET['pic'];
  4. $percent = 0.5; // pomniejsznie o połowe
  5.  
  6. header('Content-type: image/jpeg');
  7.  
  8. list($width, $height) = getimagesize($filename);
  9. $new_width = $width * $percent;
  10. $new_height = $height * $percent;
  11.  
  12. $image_p = imagecreatetruecolor($new_width, $new_height);
  13. $image = imagecreatefromjpeg($filename);
  14. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  15.  
  16. //wyjście
  17. imagejpeg($image_p, null, 100);
  18. ?>

(zresztą ten skrypt jest skopiowany z php.net)

Czy ktoś ma jakiś pomysł na rozwiązanie tego problemu?

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Drugim argumentem funkcji copy jest plik docelowy pod którym ma byc zapisany plik źródłowy. Copy nie wykonuje pliku docelowego a w niego kopiuje plik źródłowy (jesli wogole tak mozna powiedziec biggrin.gif).
Musisz najpierw wykonac miniaturkę, a potem ją zapisac tam gdzie chcesz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hao
post
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 12.02.2004

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


Ale proszę zauważyć, że drugi argument tej funkcji nie jest wykonywalnym plikiem docelowym (o ile o to chodzi) a jedynie ścieżką z nazwą generowaną z dwóch zmiennych:

  1. <?php
  2.  
  3. $katalog="sciezka1";
  4. $file="nowy.jpg";
  5.  
  6. print("$katalog/m_$file"); // drugi argument z copy("$katalog/m.php?pic=$file", "$katalog/m_$file");
  7.  
  8. ?>

Da na wyjściu:

sciezka1/m_nowy.jpg

---------------------------
Albo może inaczej:

W jaki sposób mogę z pliku generujacego jpega zapisać go do katalogu automatycznie od razu? Będę wdzięczny za małą podowiedź, bo już po prostu nie mogę patrzyć na monitor dzisiaj (a co za tym idzie grzebać w php.net)..tongue.gif
pozdrawiam.

Ten post edytował hao 2.09.2005, 15:12:16
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




MIalem na mysli pierwszy argument funkcji. Jako pierwszy argument podajesz nazwe pliku, który ma ci wygenerowac dopiero jpg. Ty musisz od razu podać nazwe juz istniejącego pliku.


Jesli wygeneryjesz juz jpg, to zapisz go tam gdzie chcesz. fopen, fwrite,fclose


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 14:52