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

resize slike koja se cita iz baze

[es] :: PHP :: resize slike koja se cita iz baze

[ Pregleda: 2593 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ivan.petrovic
Ivan Petrovic
HO, ProCredit Bank
ar-bg-ar

Član broj: 135228
Poruke: 48
*.vozd.net.



Profil

icon resize slike koja se cita iz baze02.12.2007. u 20:07 - pre 199 meseci
moje pitanje je kako se smanjuje slika "u letu", znaci da ne koristim njeno cuvanje kao fajl, neko citam iz baze,i stampam na stranu direktno....kako da joj ogranicim dimenzije bez pomocnog cuvanja i resize-a?

Znam da je bilo par slicnih topica o ovme, ali nema nijednog konkretnog odgovora, sve komentari tipa ne koristi blob :)
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: resize slike koja se cita iz baze02.12.2007. u 21:02 - pre 199 meseci
ako sam te dobro razumeo treba ti nesto sto ce da smanji sliku al da se ta smanjena slika nigde ne snima. ovo je moj neki kod za pravljenje thumbnejlova, koristi samo ako na strani imas svega nekoliko slika za resize, jer zna da oduzi posao ako bude puno slika. sliku koju zadas kropuje na datu velicinu i iscrtava je.

Code:

<?php

$image = $slika;//ovo je slika koju ces da resajzujes
$newHeight = '100';//u pixelima postavim visinu i sirinu
$newWidth = '100';

$size = GetImageSize($image);//u pixelima uzima stvarnu visinu i sirinu slike
$width = $size[0];
$height = $size[1];

$width = $width-$newWidth;

$height = $height-$newHeight;

$x = 0;//ovde u pixelima stavi odakle da krene sa crop-ovanjem
$y = 0;

//ako je slika gif onda ovako, ako je jpg onda ImageCreateFromJpg a ako je png ImageCreateFromPng
$src = ImageCreateFromGif($image);

$tmb = ImageCreateTrueColor($newWidth,$newHeight);//pravi praznu lsiku sa zadatim velicinama

ImageCopy($tmb, $src, 0, 0, $x, $y, $newWidth, $newHeight);
//opet menjaj u zavisnosti kakva je slika u pitanju (gif,jpg,png)
header('Content-type: image/gif');
ImageGif($tmb, null, 100);

ImageDestroy($src);
ImageDestroy($tmb);
ImageDestroy($thumb);

?>


napravio sam bio negde komplikovanije ovo sa odredjivanjem koji je tip slike u pitanju samo sam negde metnuo u dubine harda :)

hope it helps :)
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: resize slike koja se cita iz baze02.12.2007. u 21:15 - pre 199 meseci
Resize-ovanje slike je dosta zahtevan proces za sistem, naročito većih dimenzija.
Zato je dobra praksa da čuvaš (keširaš) smanjene slike i da njih posle podmećeš brovzerima.
Ako imaš više ovakvih slika na stranici savetujem ti da ne ideš "u letu".

Pri implementaciji ovoga prvo pitanje koje se postavlja je dali su te slike javne ili ne.
Ako jesu javne onda ti je najbolje rešenje da ih uopšte ne lageruješ u bazu nego kao datoteke a pri konstukciji HTMLa ćeš u IMG tag staviti lokaciju te keširane datoteke.
Ovaj pristup je jako koristan ako praviš stranu s mnogo takvih slika jer ako upotrebiš skladištenje u bazi moraće se pokretati PHP/MySql posebno za svaku sliku što usporava prikazivanje stranice.
Neko skladišti te keš-slike u isti direktorijum sa originalom dodajući neki sufiks imenu, npr. "stolica120x80.jpg", a neko sve keševe drži u posebnom diru recimo nazavnom "cache".
Prilikom kreiranja sadržaja stranice prvo proveriš postoji li ta umanjena sličica pa je kreiraš ako ne, pa tek onda sklopiš img tag.

Druga je stvar ako slike nisu javne, recimo galerija za članove sajta...., onda treba primeniti sistem kao za download.
Znači mora ići preko PHPa, npr: <img src="/galpic.php?pic=31972">, gde će php skript prosuditi može li posetilac videti sliku ili ne, a direktorijume sa slikama zaštiti od direktnog web pristupa.

Uopšteno, držati datoteke u bazi retko kad ima smisla, vrlo su retke situacije kad je to stvarno potrebno.

A kako izvesti smanjivanje? Možeš ovo što napisa komšija Kazil, ili bilo koju drugu skriptu koju nađeš na netu samo umesto u datoteku preusmeriš na izlaz, recimo ehuješ rezultat, uz obavezan Header/content-type.
Pretraži net s ključnom reči: imagecopyresampled.

Edit: tek sad vidim, Kazil ova tvoja skripta radi crop-ovanje a ne resize-ovanje.

[Ovu poruku je menjao mVeliki dana 02.12.2007. u 22:27 GMT+1]
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: resize slike koja se cita iz baze03.12.2007. u 06:44 - pre 199 meseci
da cropuje, ali ne menja originalnu sliku. ako ne odgovara verujem da se sa malim igranjem moze pretvoriti da pravi risajz :)
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: resize slike koja se cita iz baze03.12.2007. u 07:13 - pre 199 meseci
Ima upotrebljiv primer na http://www.php.net/manual/en/function.imagecopyresampled.php

Korisni su i komentari na donjem delu stranice.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

zimbala

Član broj: 37431
Poruke: 16
*.ht.hr.



Profil

icon Re: resize slike koja se cita iz baze03.12.2007. u 14:30 - pre 199 meseci
možda ti ovo pomogne:

dio predloska za sliku:

Code:
...
<img src="drawslika.php?nwidth=<!--SLIKA_WIDTH-->" Style="width: <!--SLIKA_WIDTH-->px;    height: auto;" border="1">
...



drawslika.php - čitanje iz mysql baze:

Code:

<?php
//drawslika.php?id=nn
include('config.php');

$sirina=$_REQUEST['nwidth'];

mysql_connect ($host, $username, $password) OR DIE ("Could not connect to MySQL");
mysql_select_db($database) OR DIE ("Can't select database.");
$result=mysql_query("SELECT naziv, tip, slika FROM tabela");//naziv=ime fajla, tip=mime type, slika= blob
$row=mysql_fetch_object($result);

$tip=$row->tip;
$data=$row->slika; 
//$data = base64_decode($data);
$im = imagecreatefromstring($data);

if ($im == false) {
   echo "ERROR!";
   exit;
}

if($rs){ 

//resize slike
    $new_width=$sirina;
    $new_height=0;
    
    $iwidth=imagesx($im);
    $iheight=imagesy($im);
    
    //nova visina
    $dif=$new_width/$iwidth;
    $new_height=$iheight*$dif;
    
    //nova slika
    $image_p = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($image_p, $im, 0, 0, 0, 0, $new_width, $new_height, $iwidth, $iheight);


    if(strpos($tip, "jpeg")){
        header('Content-Type: $tip');
        imagejpeg($image_p,null,100);
    }elseif(strpos($tip, "png")){
        header('Content-Type: $tip');
        imagepng($image_p,null,100);
    }elseif(strpos($tip, "gif")){
        header('Content-Type: $tip');
        imagegif($image_p,null,100);
    }
}else{ 
//originalna velicina
    Header( "Content-type: $tip");
    echo $row->slika; 
}
exit;
?>


znači išlo bi ovako:
1. sa nekom skriptom generiraš template i usput postaviš širinu slike (<!--SLIKA_WIDTH-->)
2. prikažeš html, a drawslika.php se sam okine i generira sliku.[code][code][code][code]

[sub][[b]Ovu poruku je menjao zimbala dana 03.12.2007. u 15:43 GMT+1[/b]][/sub]
 
Odgovor na temu

ivan.petrovic
Ivan Petrovic
HO, ProCredit Bank
ar-bg-ar

Član broj: 135228
Poruke: 48
*.vozd.net.



Profil

icon Re: resize slike koja se cita iz baze03.12.2007. u 16:12 - pre 199 meseci
Hvala svima na zaista lepim kodovima. Puno mi je znacilo.
Pozdrav!
 
Odgovor na temu

[es] :: PHP :: resize slike koja se cita iz baze

[ Pregleda: 2593 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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