MAX WIDTH="#" HEIGHT="#"
Moderatori: Moderatori, Start Moderator
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
MAX WIDTH="#" HEIGHT="#"
Cine ma poate ajuta cu un cod...
Sa-mi afiseze o poza care sa nu depaseasca max de width si height si anume un exemplu:
1. daca poza are 800x600 si eu pun max 200 cu 200 poza sa mio afiseze de genu 200x170
2. daca poza are 800x1000 si pun max 200 cu 200 poza sa mio afiseze de genu 140x200
deci important e cand imi misoreaza poza sa nu-mi modifice si vizualizarea pozei adica daca asi pune direct img src=url width=200 height=200 imi face poza de 200x200 si se va vedea urat ..
Sa-mi afiseze o poza care sa nu depaseasca max de width si height si anume un exemplu:
1. daca poza are 800x600 si eu pun max 200 cu 200 poza sa mio afiseze de genu 200x170
2. daca poza are 800x1000 si pun max 200 cu 200 poza sa mio afiseze de genu 140x200
deci important e cand imi misoreaza poza sa nu-mi modifice si vizualizarea pozei adica daca asi pune direct img src=url width=200 height=200 imi face poza de 200x200 si se va vedea urat ..
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
iata o clasa mesterita de mine face ce vrei tu
[php] class prelucrare_poze {
#----- gd info -------
# print "<pre>";
# var_dump(gd_info());
#---------------------
var $fel_poza; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
var $latime; //latimea poza simpla
var $inaltime; //inaltimea poza simpla
var $latime_thumb; //latimea thumbnail-ului
var $inaltime_thumb; //inaltimea thumbnail-ului
var $greutate; //greutatea admisa
var $cale; //locatia unde se urca poza, calea
var $prefix; //cuvant ce apare inaintea numelui pozei
var $tipuri_headere = array(2,3,1); //jpg, png, gif
var $tipuri_extensii = array('.jpg','.png','.gif'); //extensiile suportate
var $poza_finala; //variabila cu ajutorul careia se transporta numele pozelor prin clasa
var $status; //afiseaza mesajele de eroare; daca nu sunt erori afiseaza numele pozei finale
function formeaza_numele($atribut, $sample_acceptat, $extensie) {
//--- construieste numele semifinal
$poza_semifinala = $this->cale.$this->prefix.strtolower($sample_acceptat['name']);
//--- scoate extensia pt urmatoarea prelucrare, se adauga numar unic
$z = str_replace($extensie, '_'.time(), $poza_semifinala);
//--- formeaza numele finale
switch($atribut) {
//----------- nume final poza simpla ----- se trimite numele final(fara cale) in variabila 'status' -------
case 'mare': $poza_finala = $z.$extensie; $this->status = str_replace($this->cale, '', $poza_finala); break;
case 'thumb': $poza_finala = $z.'_small'.$extensie; break;
}
$this->poza_finala = $poza_finala;
}
function prelucreaza($sample_acceptat, $extensie, $atribut) {
#------------ se formeaza dimensiunile noi -------------------------------
switch($atribut) {
case 'mare':
list($width_orig, $height_orig) = getimagesize($this->cale.$sample_acceptat['name']);
//--- cand se da doar latimea
if(!empty($this->latime) and empty($this->inaltime)) {
$inaltime_noua = ($this->latime / $width_orig) * $height_orig;
$latime_noua = $this->latime;
}
//--- cand se da doar inaltimea
if(!empty($this->inaltime) and empty($this->latime)) {
$latime_noua = ($this->inaltime / $height_orig) * $width_orig;
$inaltime_noua = $this->inaltime;
}
//--- cand nu se da nici una
if(empty($this->inaltime) and empty($this->latime)) {
$latime_noua = $width_orig;
$inaltime_noua = $height_orig;
}
//--- cand se dau ambele
if(!empty($this->inaltime) and !empty($this->latime)) {
$latime_noua = $this->latime;
$inaltime_noua = $this->inaltime;
}
break;
case 'thumb':
list($width_orig, $height_orig) = getimagesize($this->cale.$sample_acceptat['name']);
//--- cand se da doar latimea
if(!empty($this->latime_thumb) and empty($this->inaltime_thumb)) {
$inaltime_noua = ($this->latime_thumb / $width_orig) * $height_orig;
$latime_noua = $this->latime_thumb;
}
//--- cand se da doar inaltimea
if(!empty($this->inaltime_thumb) and empty($this->latime_thumb)) {
$latime_noua = ($this->inaltime_thumb / $height_orig) * $width_orig;
$inaltime_noua = $this->inaltime_thumb;
}
//--- cand nu se da nici una
if(empty($this->inaltime_thumb) and empty($this->latime_thumb)) {
$latime_noua = $width_orig;
$inaltime_noua = $height_orig;
}
//--- cand se dau ambele
if(!empty($this->inaltime_thumb) and !empty($this->latime_thumb)) {
$latime_noua = $this->latime_thumb;
$inaltime_noua = $this->inaltime_thumb;
}
break;
}
#-------------------------------------------------------------------------
switch($extensie) {
//--- prelucrare .jpg
case 2:
//--- se formeaza numele pozei
$this->formeaza_numele($atribut, $sample_acceptat, '.jpg');
//--- creeaza un patrat negru (un blank) TRUE COLOR cu dimensiunile date
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
//--- creeaza un jpg din poza INITIALA
$image = imagecreatefromjpeg($this->cale.$sample_acceptat['name']);
//--- suprapune jpg-ul peste patratul creeat anterior
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
//--- salveaza poza in folder; aici se alege calitatea pozei
imagejpeg($blank, $this->poza_finala, 80);
break;
//--- prelucrare .png
case 3:
$this->formeaza_numele($atribut, $sample_acceptat, '.png');
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
$image = imagecreatefrompng($this->cale.$sample_acceptat['name']);
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
imagepng($blank, $this->poza_finala);
break;
//--- prelucrare .gif
case 1:
$this->formeaza_numele($atribut, $sample_acceptat, '.gif');
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
$image = imagecreatefromgif($this->cale.$sample_acceptat['name']);
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
imagegif($blank, $this->poza_finala);
break;
}
}
//--- poza e pe server; alte verificari
function verificare_poza_server($poza_de_verificat) {
list(,,$tip_header) = getimagesize($this->cale.$poza_de_verificat['name']);
//--- verifica headerul pozei
if(in_array($tip_header, $this->tipuri_headere)) {
//--- se trimite spre prelucrare poza mica si mare
if($this->fel_poza == 'simpla_si_thumb') {
$this->prelucreaza($poza_de_verificat, $tip_header, 'mare');
$this->prelucreaza($poza_de_verificat, $tip_header, 'thumb');
}
//--- se trimite spre prelucrare poza simpla
elseif($this->fel_poza == 'simpla') {
$this->prelucreaza($poza_de_verificat, $tip_header, 'mare');
}
}
else {
$this->status = 'headerul pozei nu corespunde cu extensia';
}
//--- sterge poza pe baza careia s-a lucrat
unlink($this->cale.$poza_de_verificat['name']);
}
//--- o prima verificare inainte de upload
function verifica($sample) {
$subject = strtolower($sample['name']);
foreach($this->tipuri_extensii as $ext) {
//--- extensia
if(strpos($subject, $ext) !== false) {
//--- greutatea
if($this->greutate > $sample['size']) {
$upload_poza = $this->cale.$sample['name'];
if(move_uploaded_file($sample['tmp_name'], $upload_poza) !== false) {
$this->verificare_poza_server($sample);
}
else {
///echo 'poza NU a fost urcata';
$this->status = 'poza NU a fost urcata';
}
}
else {
///echo 'greutatea nu este buna';
$this->status = 'greutatea nu este buna';
}
break;
}
else {
///echo 'extensia nu e suportata';
$this->status = 'extensia nu e suportata';
}
}
}
}
#---------------------------- initializeaza obiectul --------------------------------------------
# daca se doreste poza mare si poza mica se specifica la metoda 'fel poza' << simpla_si_thumb >>
# daca se doreste doar o poza se specifica la metoda 'fel poza' << simpla >>
# pentru poza simpla se seteaza doar variabilele 'latime' si 'inaltime'
#------------------------------------------------------------------------------------------------
if(!empty($_FILES['poza1']['name'])) {
$test1 = new prelucrare_poze;
$test1->fel_poza = 'simpla_si_thumb'; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
$test1->latime = '600'; //latimea poza simpla (px)
$test1->inaltime = ''; //inaltimea poza simpla (px)
$test1->latime_thumb = '150'; //latimea thumbnail-ului (px)
$test1->inaltime_thumb = ''; //inaltimea thumbnail-ului (px)
$test1->greutate = 2097152; //greutatea admisa (bytes) - acum 2MB
$test1->cale = 'img/'; //locatia unde se urca poza, calea
$test1->prefix = 'cucu_'; //cuvant ce apare inaintea numelui pozei
$test1->verifica($_FILES['poza1']); //poza propriu-zisa
echo $test1->status;
}
if(!empty($_FILES['poza2']['name'])) {
$test2 = new prelucrare_poze;
$test2->fel_poza = 'simpla'; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
$test2->latime = '450'; //latimea poza simpla (px)
$test2->inaltime = ''; //inaltimea poza simpla (px)
$test2->latime_thumb = ''; //latimea thumbnail-ului (px)
$test2->inaltime_thumb = ''; //inaltimea thumbnail-ului (px)
$test2->greutate = 2097152; //greutatea admisa (bytes) - acum 2MB
$test2->cale = 'img/'; //locatia unde se urca poza
$test2->prefix = 'promo_'; //cuvant ce apare inaintea numelui pozei
$test2->verifica($_FILES['poza2']); //poza propriu-zisa
echo $test2->status;
}[/php]
[php] class prelucrare_poze {
#----- gd info -------
# print "<pre>";
# var_dump(gd_info());
#---------------------
var $fel_poza; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
var $latime; //latimea poza simpla
var $inaltime; //inaltimea poza simpla
var $latime_thumb; //latimea thumbnail-ului
var $inaltime_thumb; //inaltimea thumbnail-ului
var $greutate; //greutatea admisa
var $cale; //locatia unde se urca poza, calea
var $prefix; //cuvant ce apare inaintea numelui pozei
var $tipuri_headere = array(2,3,1); //jpg, png, gif
var $tipuri_extensii = array('.jpg','.png','.gif'); //extensiile suportate
var $poza_finala; //variabila cu ajutorul careia se transporta numele pozelor prin clasa
var $status; //afiseaza mesajele de eroare; daca nu sunt erori afiseaza numele pozei finale
function formeaza_numele($atribut, $sample_acceptat, $extensie) {
//--- construieste numele semifinal
$poza_semifinala = $this->cale.$this->prefix.strtolower($sample_acceptat['name']);
//--- scoate extensia pt urmatoarea prelucrare, se adauga numar unic
$z = str_replace($extensie, '_'.time(), $poza_semifinala);
//--- formeaza numele finale
switch($atribut) {
//----------- nume final poza simpla ----- se trimite numele final(fara cale) in variabila 'status' -------
case 'mare': $poza_finala = $z.$extensie; $this->status = str_replace($this->cale, '', $poza_finala); break;
case 'thumb': $poza_finala = $z.'_small'.$extensie; break;
}
$this->poza_finala = $poza_finala;
}
function prelucreaza($sample_acceptat, $extensie, $atribut) {
#------------ se formeaza dimensiunile noi -------------------------------
switch($atribut) {
case 'mare':
list($width_orig, $height_orig) = getimagesize($this->cale.$sample_acceptat['name']);
//--- cand se da doar latimea
if(!empty($this->latime) and empty($this->inaltime)) {
$inaltime_noua = ($this->latime / $width_orig) * $height_orig;
$latime_noua = $this->latime;
}
//--- cand se da doar inaltimea
if(!empty($this->inaltime) and empty($this->latime)) {
$latime_noua = ($this->inaltime / $height_orig) * $width_orig;
$inaltime_noua = $this->inaltime;
}
//--- cand nu se da nici una
if(empty($this->inaltime) and empty($this->latime)) {
$latime_noua = $width_orig;
$inaltime_noua = $height_orig;
}
//--- cand se dau ambele
if(!empty($this->inaltime) and !empty($this->latime)) {
$latime_noua = $this->latime;
$inaltime_noua = $this->inaltime;
}
break;
case 'thumb':
list($width_orig, $height_orig) = getimagesize($this->cale.$sample_acceptat['name']);
//--- cand se da doar latimea
if(!empty($this->latime_thumb) and empty($this->inaltime_thumb)) {
$inaltime_noua = ($this->latime_thumb / $width_orig) * $height_orig;
$latime_noua = $this->latime_thumb;
}
//--- cand se da doar inaltimea
if(!empty($this->inaltime_thumb) and empty($this->latime_thumb)) {
$latime_noua = ($this->inaltime_thumb / $height_orig) * $width_orig;
$inaltime_noua = $this->inaltime_thumb;
}
//--- cand nu se da nici una
if(empty($this->inaltime_thumb) and empty($this->latime_thumb)) {
$latime_noua = $width_orig;
$inaltime_noua = $height_orig;
}
//--- cand se dau ambele
if(!empty($this->inaltime_thumb) and !empty($this->latime_thumb)) {
$latime_noua = $this->latime_thumb;
$inaltime_noua = $this->inaltime_thumb;
}
break;
}
#-------------------------------------------------------------------------
switch($extensie) {
//--- prelucrare .jpg
case 2:
//--- se formeaza numele pozei
$this->formeaza_numele($atribut, $sample_acceptat, '.jpg');
//--- creeaza un patrat negru (un blank) TRUE COLOR cu dimensiunile date
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
//--- creeaza un jpg din poza INITIALA
$image = imagecreatefromjpeg($this->cale.$sample_acceptat['name']);
//--- suprapune jpg-ul peste patratul creeat anterior
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
//--- salveaza poza in folder; aici se alege calitatea pozei
imagejpeg($blank, $this->poza_finala, 80);
break;
//--- prelucrare .png
case 3:
$this->formeaza_numele($atribut, $sample_acceptat, '.png');
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
$image = imagecreatefrompng($this->cale.$sample_acceptat['name']);
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
imagepng($blank, $this->poza_finala);
break;
//--- prelucrare .gif
case 1:
$this->formeaza_numele($atribut, $sample_acceptat, '.gif');
$blank = imagecreatetruecolor($latime_noua, $inaltime_noua);
$image = imagecreatefromgif($this->cale.$sample_acceptat['name']);
imagecopyresampled($blank, $image, 0, 0, 0, 0, $latime_noua, $inaltime_noua, $width_orig, $height_orig);
imagegif($blank, $this->poza_finala);
break;
}
}
//--- poza e pe server; alte verificari
function verificare_poza_server($poza_de_verificat) {
list(,,$tip_header) = getimagesize($this->cale.$poza_de_verificat['name']);
//--- verifica headerul pozei
if(in_array($tip_header, $this->tipuri_headere)) {
//--- se trimite spre prelucrare poza mica si mare
if($this->fel_poza == 'simpla_si_thumb') {
$this->prelucreaza($poza_de_verificat, $tip_header, 'mare');
$this->prelucreaza($poza_de_verificat, $tip_header, 'thumb');
}
//--- se trimite spre prelucrare poza simpla
elseif($this->fel_poza == 'simpla') {
$this->prelucreaza($poza_de_verificat, $tip_header, 'mare');
}
}
else {
$this->status = 'headerul pozei nu corespunde cu extensia';
}
//--- sterge poza pe baza careia s-a lucrat
unlink($this->cale.$poza_de_verificat['name']);
}
//--- o prima verificare inainte de upload
function verifica($sample) {
$subject = strtolower($sample['name']);
foreach($this->tipuri_extensii as $ext) {
//--- extensia
if(strpos($subject, $ext) !== false) {
//--- greutatea
if($this->greutate > $sample['size']) {
$upload_poza = $this->cale.$sample['name'];
if(move_uploaded_file($sample['tmp_name'], $upload_poza) !== false) {
$this->verificare_poza_server($sample);
}
else {
///echo 'poza NU a fost urcata';
$this->status = 'poza NU a fost urcata';
}
}
else {
///echo 'greutatea nu este buna';
$this->status = 'greutatea nu este buna';
}
break;
}
else {
///echo 'extensia nu e suportata';
$this->status = 'extensia nu e suportata';
}
}
}
}
#---------------------------- initializeaza obiectul --------------------------------------------
# daca se doreste poza mare si poza mica se specifica la metoda 'fel poza' << simpla_si_thumb >>
# daca se doreste doar o poza se specifica la metoda 'fel poza' << simpla >>
# pentru poza simpla se seteaza doar variabilele 'latime' si 'inaltime'
#------------------------------------------------------------------------------------------------
if(!empty($_FILES['poza1']['name'])) {
$test1 = new prelucrare_poze;
$test1->fel_poza = 'simpla_si_thumb'; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
$test1->latime = '600'; //latimea poza simpla (px)
$test1->inaltime = ''; //inaltimea poza simpla (px)
$test1->latime_thumb = '150'; //latimea thumbnail-ului (px)
$test1->inaltime_thumb = ''; //inaltimea thumbnail-ului (px)
$test1->greutate = 2097152; //greutatea admisa (bytes) - acum 2MB
$test1->cale = 'img/'; //locatia unde se urca poza, calea
$test1->prefix = 'cucu_'; //cuvant ce apare inaintea numelui pozei
$test1->verifica($_FILES['poza1']); //poza propriu-zisa
echo $test1->status;
}
if(!empty($_FILES['poza2']['name'])) {
$test2 = new prelucrare_poze;
$test2->fel_poza = 'simpla'; //sunt 2 feluri: << simpla_si_thumb >> si << simpla >>
$test2->latime = '450'; //latimea poza simpla (px)
$test2->inaltime = ''; //inaltimea poza simpla (px)
$test2->latime_thumb = ''; //latimea thumbnail-ului (px)
$test2->inaltime_thumb = ''; //inaltimea thumbnail-ului (px)
$test2->greutate = 2097152; //greutatea admisa (bytes) - acum 2MB
$test2->cale = 'img/'; //locatia unde se urca poza
$test2->prefix = 'promo_'; //cuvant ce apare inaintea numelui pozei
$test2->verifica($_FILES['poza2']); //poza propriu-zisa
echo $test2->status;
}[/php]
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
ms mult ... dar in caz ca nu vreau prin upload si nu vreau sa-mi creeze automat thumbs sa fac manual asta prin adaugarea unui link de la departare... cum asi putea sa fac?
adick sa fie un for de genu add img url, add thumb url, submit ... si sa se afiseze pe o pagina unde setez eu max pt poza si pt thumb?
sau varianta 2 sa creeze automat thumbs intrun director de pe host cand adauga poza prin adaugarea url-ului?
adick sa fie un for de genu add img url, add thumb url, submit ... si sa se afiseze pe o pagina unde setez eu max pt poza si pt thumb?
sau varianta 2 sa creeze automat thumbs intrun director de pe host cand adauga poza prin adaugarea url-ului?
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
- pepsinectar
- Average Member
- Mesaje: 125
- Membru din: Sâm Aug 06, 2005 10:41 pm
- Contact:
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Google [Bot] și 21 vizitatori

