MAX WIDTH="#" HEIGHT="#"

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

MAX WIDTH="#" HEIGHT="#"

Mesajde pepsinectar » Mie Sep 14, 2005 10:09 pm

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 ..



Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Mie Sep 14, 2005 10:33 pm

wordpress are un fisier cu tunctii
(admin_functions parca) care are un sistem de facut thumbs
care face exact ce vrei tu ...

ia latura mare si proportioneaza dupa ea (cu o dimensiune maxima)

check it :D
|

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

Mesajde pepsinectar » Mie Sep 14, 2005 11:04 pm


lllgrklll
PHPRomania Supporter
Mesaje: 10
Membru din: Lun Sep 12, 2005 8:00 am
Localitate: Bucuresti

Mesajde lllgrklll » Mie Sep 14, 2005 11:43 pm


Avatar utilizator
cucul_meu
PHPRomania Supporter
Mesaje: 21
Membru din: Vin Iul 22, 2005 8:00 am

Mesajde cucul_meu » Joi Sep 15, 2005 10:09 am

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]

Avatar utilizator
cucul_meu
PHPRomania Supporter
Mesaje: 21
Membru din: Vin Iul 22, 2005 8:00 am

Mesajde cucul_meu » Joi Sep 15, 2005 10:12 am


Avatar utilizator
stealth
Senior Member
Mesaje: 308
Membru din: Lun Iun 21, 2004 9:36 am
Localitate: Timisoara
Contact:

Mesajde stealth » Joi Sep 15, 2005 10:42 pm

regula de 3 simpla ????

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

Mesajde pepsinectar » Dum Sep 18, 2005 9:29 am

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?

Avatar utilizator
cucul_meu
PHPRomania Supporter
Mesaje: 21
Membru din: Vin Iul 22, 2005 8:00 am

Mesajde cucul_meu » Dum Sep 18, 2005 11:25 am

ce nu inteleg eu este cum sa faci upload la o poza prin url :?: 8O

adica poza este deja urcata pe un server undeva pe web si tu vrei sa o tragi pe serverul tau printr-un form :?:

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

Mesajde pepsinectar » Dum Sep 18, 2005 12:53 pm

da.. deci nu vreau so urc... poza e deja urcata... eu pun doar linkul de la poza si mi se salveaza in bazadedate... si cand afiseaza poza sa o afiseze la un maxim de wight... sa nu imi strice tabele de html din site

Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Dum Sep 18, 2005 9:22 pm

|

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

Mesajde pepsinectar » Dum Sep 18, 2005 9:40 pm


Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Dum Sep 18, 2005 9:42 pm

|

Avatar utilizator
pepsinectar
Average Member
Mesaje: 125
Membru din: Sâm Aug 06, 2005 10:41 pm
Contact:

Mesajde pepsinectar » Dum Sep 18, 2005 9:45 pm


beeuser
Senior Member
Mesaje: 390
Membru din: Joi Mai 20, 2004 10:32 am
Contact:

Mesajde beeuser » Dum Sep 18, 2005 11:24 pm

Incearca sa dai numai width la poza, fara height.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Google [Bot] și 21 vizitatori