Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Resize ideja alternativa

[es] :: PHP :: Resize ideja alternativa

[ Pregleda: 2146 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.29.*



Profil

icon Resize ideja alternativa12.04.2011. u 17:45 - pre 157 meseci
Pozdrav. Uradio sam neki kod za resize i skripta radi kako sam i predvidio.Skripta resize-uje na 200px x 200 px. I sve je okej kada je slika koju uploadujem približne visine i širine.
No veliki je problem kada npr. uploadujem sliku koja je 400 px širine i 100 px visine.Eh pošto logički predpostavljam da je nemoguče uraditi resize a da se ne primjeti sa ovakvim dimenzijama. Zamolio bih vas da mi date neke alternative.
Cilj mi je da napravim skriptu za vijesti, na početnoj stranici će prikazivati malu sliku od npr 200 x 200 px, dok bi na stranici kada se klikne "Čitaj sve" bila veća slika.

U glavi imam 3 ideje pa bih molio od vas iskusnijih da mi date koji savjet.

1.Da ograničim širinu i viisinu slika koliko hoću tj. da mi maksimalna sirina i visina slike bude npr 250 x 200 px.
2.Da radim resize i da velike slike omogućim ali da ograničim da visina može biti veća od širine samo za 100 px ili obrnuto.(Resize bi bio koliko toliko prihvatljiv).
3. Da omogućim upload slika i da radim crop djela slike na npr 200x200px..

Evo i kod koji koristim.
Code:
if(isset($_POST['Submit']))
{
$current_image=$_FILES['image']['name'];
$extension = substr(strrchr($current_image, '.'), 1);
if (($extension!= "jpg") && ($extension != "jpeg"))  
{
die('Unknown extension');
}
$time = date("fYhis");
$new_image = $time . "." . $extension;
$destination="uploads/".$new_image;


if(move_uploaded_file($_FILES['image']['tmp_name'], $destination)) {
    echo "The file ".  basename( $_FILES['image']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}


//resize//
$create = imagecreatefromjpeg($destination);
$currwidth = imagesx($create); 
$currheight = imagesy($create);
$ccreate = ImageCreateTrueColor(50,50);

imagecopyresampled($ccreate, $create, 0, 0, 0, 0, 50, 50, 
$currwidth, $currheight); 
imagejpeg($ccreate, "thumbs/".$new_image);
imagedestroy($ccreate); 
imagedestroy($create); 

}else{
?>
<form method="post" enctype="multipart/form-data" action="cc.php">
<input type="file" name="image" ><br>
<input type="submit" name="Submit" value="submit">
</form>
<?php
}


Zamolio bih komentare i za malu pomoć da vidim kako bi ovo mogao uraditi na kvalitetan način.
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Resize ideja alternativa13.04.2011. u 12:55 - pre 157 meseci
Možeš i npr. procentualno da smanjuješ slike, pošto kažeš da dimenzije nisu ite npr.
Code:

$maxWidth = 200;
$maxHeight = 200;

$ratioW = $maxWidth / $currwidth;
$ratioH = $maxHeight / $currheight;

$ratio = ($ratioW < $ratioH) ? $ratioW : $ratioH;

$newWidth = intval($currwidth * $ratio);
$newHeight = intval($currheight * $ratio);

Banned - Not available
 
Odgovor na temu

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.8.*



Profil

icon Re: Resize ideja alternativa13.04.2011. u 16:24 - pre 157 meseci
Ali i po ovom kodu ce mi raditi resize i ukoliko širina i visina budu puno odskakala jedna od druge opet se neće moći uraditi kvalitetan resize. Još neko ideja ?
Jel se i ostale skripte za vijesti rade ovako i imaju slične probleme?
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Resize ideja alternativa13.04.2011. u 17:29 - pre 157 meseci
Jedino što mi još pada na pamet je da sa ovim što sam napisao u prethodnoj poruci ukombinuješ i crop.
Banned - Not available
 
Odgovor na temu

taksistaZR
zrenjanin

Član broj: 124170
Poruke: 80
*.dynamic.isp.telekom.rs.



Profil

icon Re: Resize ideja alternativa13.04.2011. u 18:03 - pre 157 meseci
Code:

$maxx = 200;
$maxy = 200;

if ( $ogrx / $maxx > $ogry / $maxy ) 

    $ngrx = $maxx;
    $ngry = ( $ogry * $maxx ) / $ogrx;
} else { 
    $ngry = $maxy;
    $ngrx = ( $ogrx * $maxy ) / $ogry;
}


Mozes da dodas jos proveru da li je slika veca od $maxx i $maxy pre nego je smanjis.
 
Odgovor na temu

japan

Član broj: 34328
Poruke: 480
*.dynamic.sbb.rs.



+13 Profil

icon Re: Resize ideja alternativa13.04.2011. u 18:18 - pre 157 meseci
Još jedna mogućnost je da "paduješ" sliku, tj da sliku smanjiš proporcionalno, tako da ni širina ni visina ne budu veće od tih zadatih 200px, i da to onda nalepiš na beli (ili kakav god) kvadrat dimenzija 200 x 200
 
Odgovor na temu

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.24.*



Profil

icon Re: Resize ideja alternativa13.04.2011. u 21:45 - pre 157 meseci
Hajde da polako remiziramo. Nikako ne mogu postići vrhunski resize zbog rezulocije i razlike u visini/širini.Koliko sam skontao ono što mi je najlogičnije je da dozvolim upload slika dimenzija koje ja hocu?
Nekako i u početku mi se tako činilo. I ostali koji su se pravili skripte za vijesti su se susretali sa ovim problem ?
Molim još nekog iskusnijeg samo da javi i potrvrdi ovo. Hvala
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.eunet.rs.



+19 Profil

icon Re: Resize ideja alternativa13.04.2011. u 22:00 - pre 157 meseci
Baš kako ti je Japan rekao.
Resize-uj sa paddingom gde treba, u boji pozadine, ili transparentnim ako baš hoćeš. A to što će neko da uploaduje sliku 100x600 ko mu je kriv, nek je sredi pre uploada. Bitno je da nisi razbio layout stranice takvim tornjem od slike.

Dozvoli upload svih formata, pa ga ti resize-uj na maksimalnu veličinu koja će ti trebati (za prikaz vesti u celosti) i takvu je snimi kod sebe na hosting, nemaš potrebe čuvati originale. Ostale thumb-ove praviš od ovog.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

taksistaZR
zrenjanin

Član broj: 124170
Poruke: 80
*.dynamic.isp.telekom.rs.



Profil

icon Re: Resize ideja alternativa14.04.2011. u 11:31 - pre 157 meseci
1. Dozvoljavas upload svih dimenzija
2. Ako je slika veca od zadatih dimenzija smanjujes je
3. Bitno je da nova slika po sirini ili visini ne prelazi zadate dimenzije
4. Da bi slika bila dobra vodis se dimenzijom duze ose koju ogranicavas na max. duzinu i na osnovu nje dobijas proporcialnu kracu osu
5. Prikazujes sliku u div-u (po potrebi fiksnih dimenzija)

Nije bitno da li ces da padujes ili samo smanjis sliku na ovaj nacin ce ti prikaz biti dobro uniformisan.

Od slike 100 x 600 dobices sliku 33 x 200
Od slike 600 x 100 dobices sliku 200 x 33
 
Odgovor na temu

japan

Član broj: 34328
Poruke: 480
*.dynamic.sbb.rs.



+13 Profil

icon Re: Resize ideja alternativa14.04.2011. u 11:57 - pre 157 meseci
Pošto mi je pokretač teme tražio da mu napišem kod za smanjivanje sa padingom, evo na brzinu napisane f-je, bez provere tipa slike, mada bi ta provera lako mogla da se doda, pa da radi i za ostale tipove, ne samo za jpg.

A ne bi bilo loše i da se doda provera da li je slika manja od zadatih dimenzija, da se ne bi desilo da se slika povećava.


Code:

function paddedImage ($src_filename, $dest_filename, $dim, $bg_R, $bg_G, $bg_B, $quality) {

    $src = imagecreatefromjpeg($src_filename);

    $width = imagesx($src);
    $height = imagesy($src);

    $ratio_w = $dim / $width;
    $ratio_h = $dim / $height;

    $ratio = ($ratio_w < $ratio_h) ? $ratio_w : $ratio_h;

    $new_width = $width * $ratio;
    $new_height = $height * $ratio;

    $padd_x = ($dim - $new_width) / 2;
    $padd_y = ($dim - $new_height) / 2;

    $dest = imagecreatetruecolor($dim, $dim);
    $background_color = imagecolorallocate($dest, $bg_R, $bg_G, $bg_B);
    imagefilledrectangle($dest, 0, 0, $dim, $dim, $background_color);

    imagecopyresampled($dest, $src, $padd_x, $padd_y, 0, 0, $new_width, $new_height, $width, $height);

    if ($dest_filename) {
        imagejpeg($dest, $dest_filename, $quality);
    } else {
        header('Content-Type: image/jpeg');
        imagejpeg($dest, null, $quality);
    }

    imagedestroy($src);
    imagedestroy($dest);

}

$src_filename = 'test.jpg';
$dest_filename = 'test-padded.jpg';

paddedImage($src_filename, $dest_filename, 200, 128, 128, 128, 100); // čuva sliku
paddedImage($src_filename, null, 200, 128, 128, 128, 100); // štampa u browser



[Ovu poruku je menjao japan dana 14.04.2011. u 13:10 GMT+1]
 
Odgovor na temu

[es] :: PHP :: Resize ideja alternativa

[ Pregleda: 2146 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.