Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt skalujący (resize) obrazki
Forum PHP.pl > Forum > Przedszkole
tymek88
Witam!

mam pewien problem, mam topliste, na która mozna wgrywac obrazki, jest tam zastosowany zwykły resize do 50 x 50px. Niestety to jest średnie rozwiązanie, bo mimo małego zdjęcia, które i tak moze miec pixelozę, rozmiar się nei zmniejsza, wiec ładowane pliki mogą miec po 50 - 300 kb, gdzie np. sama miniaturka wazyłaby 10 kb. Ma to znaczenie, poniewaz toplista łąduje mi 100 pozycji na raz.


Szukam jakiegos skryptu, który by albo, po zuploadowaniu obrazka na serwer, tworzył osobny plik miniaturki, albo robił resize w locie. Ktoś coś poleci?

Aha i ktore waszym zdaniem rozwiąznie byłoby lepsze?

Pozdrawiam!
drake88
Kod
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
  $updateSQL = sprintf("UPDATE uzytkownicy SET ZDJECIE=%s WHERE ID=%s",
                       GetSQLValueString($_POST['zdjecie'], "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mysql_select_db($database_burdelik, $burdelik);
  $Result1 = mysql_query($updateSQL, $burdelik) or die(mysql_error());

  $updateGoTo = "profil_moj.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}
$filename = 'upload';
// Sprawdzenie, czy formularz zostal przeslany.
if (isset($_POST['submitted'])) {
if($_POST['submitted'] == "TRUE"){
  // Sprawdzenie przesylanego pliku.
  //if (isset($_FILES['$filename'])) {
  $nazwa = date(Y.m.s.d);
  
  // Weryfikowanie typu. Plik powinien byc obrazem jpeg, jpg lub gif.
    $allowed = array ('image/gif', 'image/jpeg', 'image/jpg', 'image/pjpeg');
    if (in_array($_FILES[$filename]['type'], $allowed)) {
  
  // Przenoszenie pliku.
  
      if (move_uploaded_file($_FILES[$filename]['tmp_name'], 'uploads/'.$nazwa))
      {
  
  
  
  echo '<p>Plik zostal odebrany!</p>';
      
      } else { // Nie udalo sie przeniesc pliku.
      
        echo '<p><font color="red">Plik nie zostal odebrany, poniewaz </b>';
    
        // Wyswietlanie komunikatu w zaleznosci od bledu.
        switch ($_FILES[$filename]['error']) {
          case 1:
            print 'jego rozmiar przekracza ustawienie upload_max_filesize w pliku php.ini.';
            break;
          case 2:
            print 'jego rozmiar przekracza ustawienie MAX_FILE_SIZE w formularzu HTML.';
            break;
          case 3:
            print 'przeslano tylko jego czesc.';
            break;
          case 4:
            print 'nie przeslano zadnego pliku.';
            break;
          case 6:
            print 'niedostepny byl folder tymczasowy.';
            break;
          default:
            print 'wystapil blad systemowy.';
            break;
        } // Koniec instrukcji switch.
        
        print '</b></font></p>';

      } // Koniec instrukcji if zwiazanej z przenoszeniem pliku
      
    } else { // Bledny typ.
      echo '<p><font color="red">Prosze przeslac obraz JPEG lub GIF.</font></p>';
      //unlink ($_FILES[$filename]['tmp_name']); // Usuwanie pliku.
    }

  } else { // Nie przeslano pliku.
    echo '<p><font color="red">Prosze przeslac obraz JPEG lub GIF mniejszy niz 512 KB.</font></p>';
  }
      
//} // Koniec instrukcji warunkowej sprawdzajacej przeslanie formularza.

  //$insertSQL = sprintf("INSERT INTO uzytkownicy (ZDJECIE) VALUES ('../../log/profil/uploads/$nazwa')");
  
  $updateSQL = sprintf("UPDATE uzytkownicy SET ZDJECIE='../../log/profil/uploads/$nazwa' WHERE ID=%s",
                       GetSQLValueString($_POST['id'], "int"));

  mysql_select_db($database_burdelik, $burdelik);
  $Result1 = mysql_query($updateSQL, $burdelik) or die(mysql_error());

  }
  ?>
dk1342
wykorzystaj funkcje gd bylo n razy na forum używaj opcji szukaj

http://forum.php.pl/index.php?act=Search&a...e=%2Bminiaturki
Spawnm
generowanie miniaturek smile.gif
1010
  1. <?
  2. function wgraj_obrazek($obrazek, $sciezka, $max_szerokosc, $max_wysokosc)
  3. {
  4.  
  5.   $source = @imagecreatefromjpeg($obrazek);
  6.  
  7.   if(imagesy($source)<=$max_wysokosc && imagesx($source)<=$max_szerokosc)
  8.   {
  9.      $new_height = imagesy($source);
  10.      $new_width = imagesx($source);
  11.   }
  12.   else
  13.   {
  14.      if(imagesy($source)>imagesx($source))
  15.      {
  16.         $new_height = $max_wysokosc;
  17.         $new_width = floor(imagesx($source)*($new_height/imagesy($source)));
  18.      }
  19.      else
  20.      {
  21.         $new_width = $max_szerokosc;
  22.         $new_height = floor(imagesy($source)*($new_width/imagesx($source)));
  23.      }
  24.   }
  25.   $dest = imagecreatetruecolor($new_width,$new_height);
  26.   imagecopyresampled($dest,$source,0,0,0,0,$new_width,$new_height,imagesx($source),imagesy($source));
  27.   imagejpeg($dest,$sciezka,90);
  28.   imagedestroy($source);
  29.   imagedestroy($dest);
  30.  
  31. }//koniec funkcji
  32. ?>
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.