[ nezki @ 20.01.2009. 12:44 ] @
Ovako: imam jedan folder u kome cuvam slike koje su formata 1200x1200. Ja hocu da sve slike iz tog foldera upisem u bazu ali smanjene, tj da budu formata 100x100.
Napravio sam skriptu za to ali negde gresim jer kada hocu da iscitam posle sliku iz baze i hocu da ih prikazem ne radi:
Kod moje skripte ide ovako:
Code:

<?php
//obilazak direktorijuma i smanjenje slika i upisivanje u bazu
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
       $pos_gif = strpos($file, "gif");
       $pos_jpg = strpos($file, "jpg");
       $pos_png = strpos($file, "png");
       if($pos_gif===false && $pos_jpg===false && $pos_png===false){
          echo $file;
       }else{
           $filename=$dir."/".$file;
            // Get new sizes
            list($width, $height) = getimagesize($filename);
            $newwidth = 100;
            $newheight = 100;
            
            // Load
            $thumb = imagecreatetruecolor($newwidth, $newheight);
            $source = imagecreatefromjpeg($filename);
            
            // Resize
            imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

            mysql_query("INSERT INTO tabela (id, slika) VALUES (NULL, '$thumb')");      
        }
       }
       closedir($dh);
   }
}

Ocigledno negde gresim.
[ Miroslav Ćurčić @ 20.01.2009. 14:04 ] @
$thumb je resurs/objekat, nije slika.
[ nezki @ 20.01.2009. 15:22 ] @
da, to je tacno.
Lako bih ja da je to samo slika da ne treba da smanjujem
samo, fread(fopen(slika, rb), slika_size), ali problem je stomoram da je smanjim
e sada ja i znam jos jedan gluplji nacin a jeste da napravim smanjenu sliku bas kao fajl i kada je ovako unesem onda je izbrisem ali verujem da ima i neki jednostavniji nacin.
[ Nemanja Avramović @ 20.01.2009. 15:30 ] @
Sad mi pade na pamet, možeš da koristiš funkcije ob_start(); imagejpeg(); ob_get_clean(); da pokupiš slike?

Možda postoji i elegantnije rešenje, ali verujem da je ovo elegantnije od dampovanja svake slike u fajl i brisanja istog kasnije...
[ nezki @ 20.01.2009. 17:06 ] @
Code:

<?php
//obilazak direktorijuma i smanjenje slika i upisivanje u bazu
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
       $pos_gif = strpos($file, "gif");
       $pos_jpg = strpos($file, "jpg");
       $pos_png = strpos($file, "png");
       if($pos_gif===false && $pos_jpg===false && $pos_png===false){
          echo $file;
       }else{
           $filename=$dir."/".$file;
            // Get new sizes
            list($width, $height) = getimagesize($filename);
            $newwidth = 100;
            $newheight = 100;
            
            // Load
            $thumb = imagecreatetruecolor($newwidth, $newheight);
            $source = imagecreatefromjpeg($filename);
            
            // Resize
            imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
            ob_start();
            imagejpg($thumb);
            $out=ob_get_clean();
            mysql_query("INSERT INTO tabela (id, slika) VALUES (NULL, '$out')");      
        }
       }
       closedir($dh);
   }
}


Probao sam ovako ali nece, nista mi ne upisuje u bazu.

[Ovu poruku je menjao nezki dana 22.01.2009. u 17:26 GMT+1]
[ w3industry @ 21.01.2009. 09:53 ] @
Jel moze pitanje, zasto stavljas slike u bazu? To se tako ne radi, baza ce ti biti ogromna i mozes da imas posle problema sa hostingom. Zasto samo slike ne bi smanjio u neki thumbs folder, a u bazu upisao samo ime slike. U template posle samo upises putanju i zvadis ime slike iz baze

/images/thumbs/$ime_male_slike
[ nezki @ 21.01.2009. 11:56 ] @
Evo da ti objasnim:
Sajt za koji ovo radim za hosting koristi dedicated server kod Euneta. Tako da mu pitanje velicine baze i slobodnog prostora nije uospte bitan.
Inace sajt se bavi prodajom artikala putem interneta i glavni deo sajta jeste prikaz slika artikala koji se prodaju. Te slike su formata 4000x4000 i poprilicno su velike. One se cuvaju na serveru u tri formata mali thumb 100x100 srednji thumb 300x300 i veliki thumb 1200x1200.
Glavni problem tog sajta jeste sto se slike sporo ucitavaju, jer se na jednoj stranici tog sajta prikazuju i do 40 malih thumb slika.
Da bi se to poboljsalo jedan od menadzera tog sajta koji je inace i programer rekao je da ce se ubacivanjem slika u bazu to poboljsati. Iako sam ga ja ubedjivao oni to zele da urade. Tako da je moje da im ubacim te slike u bazu i to je to.
[ w3industry @ 22.01.2009. 12:34 ] @
Citat:
jedan od menadzera tog sajta koji je inace i programer rekao je da ce se ubacivanjem slika u bazu to poboljsati

O boze koji noob. Taj da zna nesto ne bi ti savetovao ovakvu glupost. Jednostavno nema sanse da ucitavanje slike iz baze bude brze od uzitavanja slike iz foldera.
Vec imas neke teme na ovom forumu sto se tice ubacivanja slike u bazu, pogledaj.

Ja bih ti preporucio da prvo smanjis slike, a u drugoj skripti da ih ubasis u bazu.

ovaj kod bi trebalo da ti radi
Code:

if(!$data = addslashes(@fread(@fopen($dir.'/'.$file, "r"), @filesize($dir.'/'.$file))))
{    
die('Cannot create $data');
}

//onda ubacis $data u bazu , polje u bazi treb da ti bude BLOB. 

@fclose($dir.'/'.$file); 
 


Ako mozes, tj. smes postavi link ka toj prezentaciji da se uveim kako se to thumbovi sporo ucitavaju.

[ nezki @ 22.01.2009. 13:07 ] @
Da tako sam i uradio na kraju. Prvo sam sve slike smanjio i onda ih ubacio u bazu nije bilo drugog nacina.
[ Nemanja Avramović @ 22.01.2009. 13:17 ] @
Bas me zanima zasto ob_start imagejpeg i ob_get_clean nije uradilo istu stvar. Trenutno nisam kod kuce ali (kad budem kod kuce) bas cu da pogledam da li isto vraca kao i citanje podataka iz fajla
[ Miroslav Ćurčić @ 22.01.2009. 13:35 ] @
Nemanjin predlog s imagejpeg() kroz ob_start() je sasvim Ok.
Već sam ga negde koristio i radi.
[ w3industry @ 22.01.2009. 15:58 ] @
Ne ostavi link ka sajtu??
[ nezki @ 22.01.2009. 16:10 ] @
Citat:
mVeliki: Nemanjin predlog s imagejpeg() kroz ob_start() je sasvim Ok.
Već sam ga negde koristio i radi.


Kazem vam probao sam. Nista mi ne upisuje u bazu. Moguce da sam negde pogresio. Eto ostavio sam kod pa ako neko uoci gresku nek mi javi.
A sto se tice sajta ne znam mozda je glupo da ostavljam linkove ovde.
Razlog zbog cega taj menadzer zeli da prebaci slike u bazu je jer on ima neku aplikaciju koju koristi za pretragu slika i njihov prikaz. Baza mu je u MySql-u i stvarno mu mozda oko 1000 slika prikaze u roku od 3 sekunde. Ali to je ipak desktop aplikacija. e sada bi oni isto to zeleli d aimaju i na webu