Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] skalowanie obrazka porste
Forum PHP.pl > Forum > Przedszkole
Sasuke Uchiha
Chcę wgrywany obrazek na serwer odrazu zmniejszyć do konkretnych wymiarów o dobrej jakości. Oczywiście ustawię sobie mimo to maksymalne wymiary bo zdaje sobie sprawę że przy większych wymiarach może być problem z jakością.

no i niby mam coś takiego
błąd Fatal error: Class 'Imagick' not found in /edit_profil.php on line 15 sad.gif

  1. if($_POST['actions'] == 'upload'){
  2.  
  3. $file_exe = "png";
  4. $rand = rand(1,999999);
  5. $file_type = $_FILES['pliczek']['name'];
  6. $exe = explode('.', $file_type);
  7. $exe_file_image = end($exe);
  8.  
  9. $photo=new Imagick($file_type);
  10. $photo->ThumbnailImage(100,100,true); //skalujemy obrazek
  11.  
  12.  
  13. $avatar = mysql_query("SELECT avatar FROM users WHERE avatar='$rand".$_FILES['pliczek']['name']."'");
  14. if(mysql_num_rows($avatar) == 0){
  15. if($_FILES['pliczek']['size'] < 1024001){
  16. list($width, $height) = getimagesize($_FILES['pliczek']['tmp_name']);
  17. if ($width > 53 || $height > 12) {
  18. if ($file_exe == $exe_file_image){
  19. echo $_FILES['pliczek']['size'];
  20. if (move_uploaded_file($photo)) {
  21.  
  22.  
  23. $sql = mysql_query("UPDATE users SET avatar='$rand".$_FILES['pliczek']['name']."' WHERE id='$id_user'") or die ('mysql_error()');
  24. echo "Plik został załadowany poprawnie..."; echo $exe_file_image;
  25. } else{ echo "Nie dodalo i chuj"; }
  26. } else{ echo "Plik nie jest plikiem PNG"; echo $exe_file_image; }
  27. } else{ echo"walisz kupa wamiarowa"; }
  28. } else{ echo "Nie ten rozmiar"; }
  29. } else{ echo "nie jest dobrze z avataraem"; }
  30. }
mac_fly
Takie początkowe pytanie: dodałeś klasę na początku smile.gif?
  1. require_once 'Twoja_klasa.php';
Sasuke Uchiha
cóż w poradniku było tylko tyle nie napisali nic o tej klasie więc nie mam zielonego pojęcia jak to działa wink.gif
mac_fly
Jeżeli to jest twój cały kod z pliku, i nigdzie nie ma wywołania pliku klasy to musisz dodać na samym początku:
  1. require_once 'lokalizacja/twoja_klasa.php';

i powinno działać smile.gif
Sasuke Uchiha
ale ta klasa jest zdefinowana na serwie w bibliotece podajrze GD

LINK...
mac_fly
Jaki serwer używasz? Aby na pewno masz zainstalowany ten moduł smile.gif?
Wymagania: 'This extension requires ImageMagick version 6.2.4+ and PHP 5.1.3+.'.

Jeżeli używasz jakiegoś płatnego to musisz dowiedzieć się u dostawcy, a jeżeli używasz Krasnala przerzuć się na XAMPP wink.gif

Pozdrawiam
Sasuke Uchiha
home.pl

Sprawdziłem z obsługą i jest phpinfo();

help ?
!*!
Nie masz tej biblioteki na serwerze. Jest tylko GD. Skontaktuj się z obsługą home.pl, może włączą.
Sasuke Uchiha
Obsługa się upiera że IM też jest na serwie dostałem nawet link na pokuszenie ;d
IM
!*!
Z tego linku nic nie wynika, może i jestem już stary i ślepy, ale ja nie widzę tam w phpinfo żadnej informacji i IM. Chyba że to nie z Twojego serwera wink.gif tylko inna konfiguracja, ale to i tak nie wyjaśnia dlaczego skrypt nie działa, skoro rzekomi IM jest.
Sasuke Uchiha
nie wiem czy jest sens z nimi sie dochodzić wysłałem email... może po prostu znajdę inny sposób ktoś coś poleca ? byle nie trzeba było pisać 200 linijek kodu dla głupiego pomniejszenia obrazka bo to mija się z celem.
!*!
http://www.reboo.pl/2010/05/26/image-class-pro/ to dość stara biblioteka pod GD, ale działa, dobrze opisana.
Sasuke Uchiha
ee ?
Cytat
Dziękujemy za kontakt.
Rozumiem, iż maja Państwo na myśli bibliotekę ImageMagic.

Korzystanie z funkcji ImageMagic dostępne jest w php za pomocą polecenia:
system('komenda');

Przykłady komend znajdą Państwo np. na stronie: http://www.imagemagick.org/script/convert.php
Sama biblioteka ImageMagic dla PHP nie jest dostępna na naszych serwerach.

W razie pojawienia się pytań lub wątpliwości pozostajemy do dyspozycji.
!*!
Haha home.pl nie udostępnia IM z poziomu PHP, ale system już tak? Kolejny przykład tego że trzeba tą firmę omijać z daleka.

Sasuke Uchiha - na podanej przez nich stronie masz polecenia które musisz wykonać w php przy pomocy system()
Sasuke Uchiha
Nie miałem z tym nigdy styczności... i średnio wiem co ja mam zrobić heh. Teraz już wiem że następny abonament biorę w innej firmie po gruntowej analizie bo myślałem że home.pl jest naprawdę porządnym hostingiem ale widocznie się pomyliłem ;[
!*!
Zamiast
  1. $photo=new Imagick($file_type);
  2. $photo->ThumbnailImage(100,100,true); //skalujemy obrazek


Dajesz

  1. system('convert nazwa_pliku_do_zmiany.jpg -resize 50% miniatura.png');


Opcje convert masz dopisane dokładnie na tamtej stronie.
Sasuke Uchiha
No i jak to zrobić niby ?

Warning: Wrong parameter count for move_uploaded_file() in /edit_profil.php on line 25

  1. if($_POST['actions'] == 'upload'){
  2.  
  3. $file_exe = "png";
  4. $rand = rand(1,999999);
  5. $file_type = $_FILES['pliczek']['name'];
  6. $exe = explode('.', $file_type);
  7. $exe_file_image = end($exe);
  8.  
  9.  
  10. $up_files = system('convert '.$file_type.' -size 150x150 miniatura.png');
  11.  
  12. $avatar = mysql_query("SELECT avatar FROM users WHERE avatar='$rand".$_FILES['pliczek']['name']."'");
  13. if(mysql_num_rows($avatar) == 0){
  14. if($_FILES['pliczek']['size'] < 1024001){
  15. list($width, $height) = getimagesize($_FILES['pliczek']['tmp_name']);
  16. if ($width > 53 || $height > 12) {
  17. if ($file_exe == $exe_file_image){
  18. echo $_FILES['pliczek']['size'];
  19. if (move_uploaded_file("$file_type")) {
  20.  
  21.  
  22. $sql = mysql_query("UPDATE users SET avatar='$rand".$_FILES['pliczek']['name']."' WHERE id='$id_user'") or die ('mysql_error()');
  23. echo "Plik został załadowany poprawnie..."; echo $exe_file_image;
  24. } else{ echo "Nie dodalo i chuj"; }
  25. } else{ echo "Plik nie jest plikiem PNG"; echo $exe_file_image; }
  26. } else{ echo"walisz kupa wamiarowa"; }
  27. } else{ echo "Nie ten rozmiar"; }
  28. } else{ echo "nie jest dobrze z avataraem"; }
  29. }
!*!
system() nie masz przepisać do zmiennej, bo Ci nic nie zwraca. Trochę namieszałeś. Inie przekazujesz wszystkich danych http://php.net/move_uploaded_file

  1. if (move_uploaded_file($file_type)){


I pokaż całość, a nie tylko fragment, a jak już to konkretną linię tu na forum.
Sasuke Uchiha
kurde ja nie wiem już sam jak to zrobić żeby wgrywany obrazek odrazu zmniejszało do konkretnego wymiaru i dopiero zapisać na serwie:businesssmiley:
!*!
move_uploaded_file przeczytaj to. Wgraj obraz na serwer, jak już będzie, to zrób wtedy miniaturę.

  1. system('convert '.$file_type.' -size 150x150 miniatura.png');
Sasuke Uchiha
  1. <?php
  2. $edit_user = "SELECT id, login, password, email, phone, first_name, last_name, gadu_gadu, status, level, games, premium, clan, points_shop, age, info, sex, location, city, avatar, photo, views, active, site
  3. FROM users WHERE id=".$id_user."" or die('mysql_error');
  4. $result_edit_user = mysql_query($edit_user);
  5. $row_edit_user = mysql_fetch_array($result_edit_user);
  6.  
  7. if($_POST['actions'] == 'upload'){
  8.  
  9. $file_exe = "png";
  10. $rand = rand(1,999999);
  11. $file_type = $_FILES['pliczek']['name'];
  12. $exe = explode('.', $file_type);
  13. $exe_file_image = end($exe);
  14.  
  15.  
  16. $up_files = system('convert '.$file_type.' -size 150x150 miniatura.png');
  17.  
  18. $avatar = mysql_query("SELECT avatar FROM users WHERE avatar='$rand".$_FILES['pliczek']['name']."'");
  19. if(mysql_num_rows($avatar) == 0){
  20. if($_FILES['pliczek']['size'] < 1024001){
  21. list($width, $height) = getimagesize($_FILES['pliczek']['tmp_name']);
  22. if ($width > 53 || $height > 12) {
  23. if ($file_exe == $exe_file_image){
  24. echo $_FILES['pliczek']['size'];
  25. if (move_uploaded_file($up_files)) {
  26.  
  27.  
  28. $sql = mysql_query("UPDATE users SET avatar='$rand".$_FILES['pliczek']['name']."' WHERE id='$id_user'") or die ('mysql_error()');
  29. echo "Plik został załadowany poprawnie..."; echo $exe_file_image;
  30. } else{ echo "Nie dodalo i chuj"; }
  31. } else{ echo "Plik nie jest plikiem PNG"; echo $exe_file_image; }
  32. } else{ echo"walisz kupa wamiarowa"; }
  33. } else{ echo "Nie ten rozmiar"; }
  34. } else{ echo "nie jest dobrze z avataraem"; }
  35. }
  36. <form method="post" action="index_test.php?site=edit_profil" enctype="multipart/form-data">
  37. <input type="hidden" name="MAX_FILE_SIZE" value="30000">
  38.  
  39. Wybierz plik który chcesz umieścić na serwerze:<br>
  40.  
  41. <input type="file" name="pliczek" size="40"><br>
  42. <input type="submit" name="actions" value="upload">
  43. </form>';


Cytat(!*! @ 25.06.2012, 12:55:40 ) *
move_uploaded_file przeczytaj to. Wgraj obraz na serwer, jak już będzie, to zrób wtedy miniaturę.

  1. system('convert '.$file_type.' -size 150x150 miniatura.png');


no ale ja tak właśnie nie chcę...
!*!
Nie podajesz ścieżki przy wgrywanym pliku.

Cytat
no ale ja tak właśnie nie chcę...

Dlaczego?
Sasuke Uchiha
bo nie chcę wgrywać dużych formatów które są zbędne i nie zostaną wykorzystane w żadnym wypadku ? ;/
!*!
Myślę że nie rozumiesz zasad działania własnego skryptu. Zleć to komuś, albo zastosuj się do wskazówek wyżej, bo one działają i tak to powinno wyglądać.
Sasuke Uchiha
tak masz rację załóżmy że będzie 20 tysięcy userów i co ? wszyscy mają sobie mieć prawo składować bezużyteczne duże formaty avatarów ? pomyśl o trasnferze
!*!
Żeby coś zmniejszyć, najpierw musisz to wgrać na serwer, stworzyć miniaturę i skasować oryginał. Nie można tego zrobić w locie.
Sasuke Uchiha
ok działa teraz tylko muszą zrobić jeszcze aby odrazu usuwało tamtą wersję i będzie git

ok jednak nie działa tzn nie zmienia wymiaru

  1. if (move_uploaded_file($_FILES['pliczek']['tmp_name'], "img/avatars/$rand.png")) {
  2.  
  3. system('convert img/avatars/'.$rand.'.png -size 255x150 img/avatars/'.$rand.'.png');
  4. $sql = mysql_query("UPDATE users SET avatar='$rand".$_FILES['pliczek']['name']."' WHERE id='$id_user'") or die ('mysql_error()');
  5. echo "Plik został załadowany poprawnie..."; echo $exe_file_image;
  6. }


dobra dla potomnych zrobiłem to tak że najpierw oczywiście wgrywa normalną wersję a zaraz potem wybiera ten obrazek z serwera pomniejsza go i zapisuje o takiej samej nazwie co powoduje nadpisanie i duża wersja zwyczajnie znika smile.gif

  1. system('convert img/avatars/'.$rand.'.png -resize 20x20 img/avatars/'.$rand.'.png');
!*!
  1. if (move_uploaded_file($_FILES['pliczek']['tmp_name'], "img/avatars/$rand.png")) {


2 parametr to nie ma być nazwa pliku, a miejsce docelowe jego zapisu, katalog.
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.