Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.328 pregleda

Najnovija ↓

Resize ideja alternativa 12.04.2011. u 18:45 · pre 189 meseci #1
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.
Re: Resize ideja alternativa 13.04.2011. u 13:55 · pre 189 meseci #2
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);
Potpis
Banned - Not available
Re: Resize ideja alternativa 13.04.2011. u 17:24 · pre 189 meseci #3
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?
Re: Resize ideja alternativa 13.04.2011. u 18:29 · pre 189 meseci #4
Jedino što mi još pada na pamet je da sa ovim što sam napisao u prethodnoj poruci ukombinuješ i crop.
Potpis
Banned - Not available
Re: Resize ideja alternativa 13.04.2011. u 19:03 · pre 189 meseci #5
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.
Re: Resize ideja alternativa 13.04.2011. u 19:18 · pre 189 meseci #6
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
Re: Resize ideja alternativa 13.04.2011. u 22:45 · pre 189 meseci #7
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
Re: Resize ideja alternativa 13.04.2011. u 23:00 · pre 189 meseci #8
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.
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: Resize ideja alternativa 14.04.2011. u 12:31 · pre 189 meseci #9
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
Re: Resize ideja alternativa 14.04.2011. u 12:57 · pre 189 meseci
izmenjeno 1 put, poslednji put japan 14.04.2011. u 13:10
  1. japan14.04.2011. u 13:10zapis iz teksta poruke
#10
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

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme