Rezolucija fotografije

the saint

Obećava
Poruka
85
p0zdrav svima!

Na serveru imam fotografije u rezoluciji 800x600
a na stranici zelim da ih prikazem kao Thumbnails napr. u rezoluciji 80x60.
Treba mi php skripta koja ce pri ucitavanju stranice da smanji rezoluciju fotografije.
Probao sam da googlam ali neznam kako da trazim...

Hvala!
 
Ne ucitava se cela slika.
Ako na stranici imas thumb rezolucije npr 100x100 kb, logicno je da ce se samo on ucitavati.
Ako je taj thumb linkovan ka vecoj slici, onda ce ucitati velika slika u istom ili novom prozoru kako si vec podesio.
Malo si nedefinisan sta u stvari hoces
 
the saint:
Naravno! Samo sto se tada ucitava cela slika ( u kilobajtima ).
Zato mi i treba skripta. Ako imam 50 Thumbnails-a na stranici,
ima da se ucitava "100 godina".
Onda nisi dobro pitao.
U tom slucaju predpostavljam da vec imas smanjene verzije istih slika.
Treba uvek da prikazes thumbs a da svaki linkujes na veliku sliku.
Inace, kako si pitao, ispada da si trazio skriptu koja ce veliku sliku fizicki smanjiti i takvu prikazati.
 
the saint:
p0zdrav svima!

Na serveru imam fotografije u rezoluciji 800x600
a na stranici zelim da ih prikazem kao Thumbnails napr. u rezoluciji 80x60.
Treba mi php skripta koja ce pri ucitavanju stranice da smanji rezoluciju fotografije.
Probao sam da googlam ali neznam kako da trazim...

Hvala!

Imas malu gresku 800X600 nije rezolucija NEGO dimenzije u pixelima, a rezolucija ti je najverovatnije 72 dpi.
:) :) :)
 
codemaker:
Onda nisi dobro pitao.
U tom slucaju predpostavljam da vec imas smanjene verzije istih slika.
Treba uvek da prikazes thumbs a da svaki linkujes na veliku sliku.
Inace, kako si pitao, ispada da si trazio skriptu koja ce veliku sliku fizicki smanjiti i takvu prikazati.

E bas to mi treba!
Dobro sam pitao. Treba mi skripta koja ce fizicki da smanji sliku pri ucitavanju i takvu da prikaze.
 
Agent Orange:
Ne ucitava se cela slika.
Ako na stranici imas thumb rezolucije npr 100x100 kb, logicno je da ce se samo on ucitavati.
Ako je taj thumb linkovan ka vecoj slici, onda ce ucitati velika slika u istom ili novom prozoru kako si vec podesio.
Malo si nedefinisan sta u stvari hoces

Nisi me razumeo!
Thumb je ustvari ona velika slika 800x600, samo je na stranici prikazujem u smanjenim dimenzijama 80x60.
 
Previshe komplikujesh stvar. Kad bi se za svaku sitnicu koristile raznorazne skripte. source bi na kraju postao necitiljiv ili jako tesko citljiv.
Imas sliku 800x600 koja ti stoji u nekom folderu ili u root-u, nije vazno,
Na stranici hoces da se ta slika vidi ali u smanjenim dimenzijama, recimo 100x100 px.
Photostop, otvori sliku, crop podesi na 100x100 ( ili odradi resize ako moze da lepo smanji sliku bez anomalija) cropuj sliku, snimi je...Ubaci tu sliku u source, okaci stranicu, okaci sliku i gotovo.
Ako hoces da se cela slika vidi kada se klikne na taj thumb 100x100, onda ga lepo linkuj ka velikoj slici i u zavisnosti da li hoces da se slika otvori u novom prozoru ili ne, podesi lina na taget blank i gotov posao.
 
Koliko sam ja razumeo ovo, i dalje ces ucitavati sve slike u originalnim velicinama. Taj PHP kod i dalje ne radi nista drugo nego odredjuje velicinu ucitane slike za prikaz. ne menja fizicku vleicinu slike, ne kreira dakle JPG velicine thumbnaila jer to i nije moguce
.
Za to ti i ne treba skripta i to ti je vec receno. Jednostavno za IMG SRC="original.jpg" WIDTH=100 HEIGHT=100 na pimer iako je original 500x500. Klikom na thumnail ces napraviti link da ucita i prikaze vecu sliku (originalne velicine)

Toliko si zakomplikovao pitanje da na kraju nista nije bilo jasno.
To resenje nije nista novo. Moze i tako a moze i odmah da odlucis koliko ce ti biti thumbnail i ne treba ti skripta.

Bitno je da ces u bilo kom slucaju da ucitavas originalne velicine slika sto nije dobro. Zamisli samo da treba na strani da prikazes 100 slika, svaka teska po najmanje 30K (jer je original 500x400 na primer) - to znaci da ce korisnik cekati da se starna ucita tezine 3MB!

Zbog toga smo ti i predlozili da SVAKU sliku smanjis i predstavis u smanjenoj verziji kao thumbnail i tada ima mnogo manje za ucitavanje. Klikom na thumbnail ucitava se samo ta jedna slika velika. Drugim recima, tom funkcijom neces nista resiti,jer ces i dalje ucitavati orignalnu velicinu svih slika na strani, samo ce prikaz na ekranu biti manji a to se moze resiti jednostavnije, bez skripte.
 
LJUDI ajde polako....

1. Pomocu PHP-a se mogu smanjiti slike (fizicki)
2. Koriste se funkcije imagecopyresized() , imagecopyresampled() itd

Covek je lepo napisao da posetioci treba da postavljaju te slike tako da ne moze on rucno da ih smanjuje. Ako koristi fiksne dimenzije u thumb dolazice do izoblicenja slike. Zamislite da neko postavi sliku dimenzije 800x50 , a u njegovoj galeriji se prikaze slika npr 100x100. Nasta ce to da lici!?

Ona skripta ne snima novu (manju) sliku, to je tacno, ali i to se da srediti ako je potrebno. Treba ubaciti nekoliko linija koda koji ce tako smanjenu sliku kopirati i snimiti. Primer iz php manual-a:
Kod:
<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>
Zbog toga sam i rekao da pita slobodno ako nesto zapne jer onu skriptu treba malo doraditi.

Za kraj jos jednom. Pomocu PHP-a se moze smanjiti slika i kopirati na serveru ako je potrebno!
 
@the saint evo ti ova skripta koja uploaduje slike na sajt, smesta ih u folder images i pravi kopije manjih u folder images2, prikazuje malu sliku i klikom na nju dobija se velika. Ovo ti je 90% posla, jos ti ostaje da organizujes ispis galerija na nacin koji hoces...
Kod:
<?
// if an image is uploaded
if(isset($_POST['submit']))
{
    // the thumbnail height
    $size = 150;

    // the directory where the original uploaded image is saved
    $filedir = 'images/';
    // the directory where the thumbnail image is saved
    $thumbdir = 'images2/';
    // the prefix to be added to the original name to name the thumbnail
    $prefix = 'small_';

    // the file settings for the uploaded image
    $mode = '0666';
    
    $userfile_name = $_FILES['image']['name'];
    $userfile_tmp = $_FILES['image']['tmp_name'];
    $userfile_size = $_FILES['image']['size'];
    $userfile_type = $_FILES['image']['type'];
    
    if(isset($_FILES['image']['name'])) 
    { header('Content-type: image/jpeg');
        $prod_img = $filedir.$userfile_name;
		
        $prod_img_thumb = $thumbdir.$prefix.$userfile_name;
        move_uploaded_file($userfile_tmp, $prod_img);
        chmod($prod_img, octdec($mode));
        
        $sizes = getimagesize($prod_img);

        $aspect_ratio = $sizes[1]/$sizes[0]; 

        if ($sizes[1] <= $size)
        {
            $new_w = $sizes[0];
            $new_h = $sizes[1];
        }else{
            $new_h = $size;
            $new_w = abs($new_h/$aspect_ratio);
        }

        $destimg=imagecreatetruecolor($new_w,$new_h)
            or die('Problem In Creating image');
        $srcimg=imagecreatefromjpeg($prod_img)
            or die('Problem In opening Source Image');
        imagecopyresized($destimg,$srcimg,0,0,0,0,$new_w,$new_h,imagesx($srcimg),imagesy($srcimg))
            or die('Problem In resizing');
        imagejpeg($destimg,$prod_img_thumb,90)
            or die('Problem In saving');
        imagedestroy($destimg);
        
    }
    echo '
    <a href="'.$prod_img.'">
        <img src="'.$prod_img_thumb.'" width="'.$new_w.'" heigt="'.$new_h.'" alt="" />
    </a>';

// show an upload form to upload and resize an image
}else{

    echo '
    <form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">
        <input type="file" name="image" />
        <input type="submit" name="submit" value="upload and resize image" />
    </form>';
}
?>
 
Mozes da instaliras neku od besplatnih galerija, Coppermine, Gallery, 4 images itd Ako imas hosting sa php-om, bazom podataka... Sve je automatizovano, samo uploadujes i ispratis par uputstava, instalacija gotova. Ako ti tako nesto odgovara.
 
taksistaZR:
@the saint evo ti ova skripta koja uploaduje slike na sajt, smesta ih u folder images i pravi kopije manjih u folder images2, prikazuje malu sliku i klikom na nju dobija se velika. Ovo ti je 90% posla, jos ti ostaje da organizujes ispis galerija na nacin koji hoces...
Kod:
<?
// if an image is uploaded
if(isset($_POST['submit']))
{
    // the thumbnail height
    $size = 150;

    // the directory where the original uploaded image is saved
    $filedir = 'images/';
    // the directory where the thumbnail image is saved
    $thumbdir = 'images2/';
    // the prefix to be added to the original name to name the thumbnail
    $prefix = 'small_';

    // the file settings for the uploaded image
    $mode = '0666';
    
    $userfile_name = $_FILES['image']['name'];
    $userfile_tmp = $_FILES['image']['tmp_name'];
    $userfile_size = $_FILES['image']['size'];
    $userfile_type = $_FILES['image']['type'];
    
    if(isset($_FILES['image']['name'])) 
    { header('Content-type: image/jpeg');
        $prod_img = $filedir.$userfile_name;
		
        $prod_img_thumb = $thumbdir.$prefix.$userfile_name;
        move_uploaded_file($userfile_tmp, $prod_img);
        chmod($prod_img, octdec($mode));
        
        $sizes = getimagesize($prod_img);

        $aspect_ratio = $sizes[1]/$sizes[0]; 

        if ($sizes[1] <= $size)
        {
            $new_w = $sizes[0];
            $new_h = $sizes[1];
        }else{
            $new_h = $size;
            $new_w = abs($new_h/$aspect_ratio);
        }

        $destimg=imagecreatetruecolor($new_w,$new_h)
            or die('Problem In Creating image');
        $srcimg=imagecreatefromjpeg($prod_img)
            or die('Problem In opening Source Image');
        imagecopyresized($destimg,$srcimg,0,0,0,0,$new_w,$new_h,imagesx($srcimg),imagesy($srcimg))
            or die('Problem In resizing');
        imagejpeg($destimg,$prod_img_thumb,90)
            or die('Problem In saving');
        imagedestroy($destimg);
        
    }
    echo '
    <a href="'.$prod_img.'">
        <img src="'.$prod_img_thumb.'" width="'.$new_w.'" heigt="'.$new_h.'" alt="" />
    </a>';

// show an upload form to upload and resize an image
}else{

    echo '
    <form method="post" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">
        <input type="file" name="image" />
        <input type="submit" name="submit" value="upload and resize image" />
    </form>';
}
?>

Jesi probao ovaj skript? ne funkcionise kako valja. Upload je B.JPG sa mog diska.
Ne mogu da nadjem gde je greska ali meni prikazuje nakon uploada (koji je klasika i odradjuje ga normalno) sledecu poruku u netscape ili FF:
the image "http://***.***.xx.***/updateresize.php cannot be displayed, because it contains errors FF
Fajl kojim sam testirao nazvao sam "updateresize.php"
***.***.xx.*** je IP adresa na serveru na kom radim (PHP instalisan i funkcionalan)

Na IE dobijam pitanje da li zelim da otvorim ili snimim fajl "updateresize.jpg"

Negde ima greska sa imenovanjem fajla ili nesto slicno ali ne mogu naci.
Inace sam upload na /imags folder odradi ok
nema snimka thumbnaila na /images2

Ako neko ima vremena neka, jer ova skripta ne radi posao a izgleda zanimljivo.
Predpostavljam da funkcija koja smanjuje i kreira novi JPG i snima ga u /images2 nije uredu.
 
Isprobano kod mene radi dobro.

Verovatno imas problem sa GD bibliotekom u php.
Proveri da li u PHP ekstenzijama imas php_gd2.dll fajl i da li je aktiviran u php.ini .
Takodje moras da podesis extenzions_dir=(mislim da se tako zove) path do ekstenzija.

Pokreni za pocetak <?php var_dump(gd_info()) ?> u jednoj posebnoj strani da vidimo sta imas od GD biblioteke za php.
 
taksistaZR:
Isprobano kod mene radi dobro.


Verovatno imas problem sa GD bibliotekom u php.
Proveri da li u PHP ekstenzijama imas php_gd2.dll fajl i da li je aktiviran u php.ini .
Takodje moras da podesis extenzions_dir=(mislim da se tako zove) path do ekstenzija.

Pokreni za pocetak <?php var_dump(gd_info()) ?> u jednoj posebnoj strani da vidimo sta imas od GD biblioteke za php.
Provericu cim nadjem vremena. I meni je palo na pamet da nesto od podesavanja nije uredu, ali ne koristim php toliko specificno da bi imao sve podeseno za sve prilike. Uglavnom petljam sa standardnim poslovima koje mi php obavlja (baze i podaci tamo-vamo) tako da nisam kompletni expert za php.
Pogledao sam p netu, ima milijarda skriptova te vrste, u skoro svakom se pominje GD i neka dodatna podesavanja ali sam to preskakao. Pomislio sam da ako vec skripta koju si poslao radi, sto da se patim sa nekom novom.
Hvala na podsecanju.
 
Starije verzije PHP-a nemaju u sebi GD vec mora da se instalira(ne znam tacno do koje verzije). Vecina ostalih verzija ima GD kao standard, a mislim da PHP 4.3.X i jos neke imaju , ali treba da se aktivira u php.ini .
Bez GD biblioteke php ce odraditi osnovne radnje tj. upload slike, prikaz itd, ali bas za sam rad sa slikama mora se ukljuciti gd tako da najverovatnije to koci
 

Back
Top