Šta je novo?

PHP resize slike direktno iz MySql

nidzoni

Čuven
Učlanjen(a)
24.12.2002
Poruke
275
Poena
619
Na koji nacin je moguce prikazati slike smestene u mysql bazi, ali promenjenih dimenzija ? Dakle, potrebno je da ih u "letu" prilikom poziva PHP procentualno smanji ili poveca, zadrzavajuci aspec ratio i prikaze u browseru ? Bez kopiranja u drugi direktorijum i sl.

Aktivan mi je GD modul (2.0.28) , i kada funkcijom imagecopyresized pozvanu iz foldera, sve odradi kako treba, ali iz baze - nikako..
 
ok, ako nekog slucajno zanima kod bi izgledao ovako:

<?

include ('konekcija_sa_bazom.php');

$upit = "SELECT fotke FROM tabela where id=$id";
$resultat = MYSQL_QUERY($upit);
$sadrzaj = mysql_result($resultat, 0, "fotke");

header("Content-type: image/jpg");

list($sirina, $visina) = getimagesize($sadrzaj);


//zadrzava aspect ratio
$procenat = 0.25;


$imgs = $sirina * $procenat;

$imgv = $visina * $procenat;


$thumb=ImageCreate($imgs,$imgv);


$izlaz = ImagejpeG($thumb,'', 20);
print($izlaz);

imagedestroy ($im);
imagedestroy ($thumb);


?>

Nezavisno od ovog skripta kada hocu da izlistam sve fotografije (ne vece od 100 kb) iz kolone, IE 6 u petlji prikaze samo prvu u nizu i tu se zaustavi:

....

while($row = mysql_fetch_array($resultat) {

echo $row['fotke'];

} ...

Probao sam i sa img src i onda odstampa samo prvu. Da li neko eventualno zna u cemu je problem i kako bi mogao da optimizujem skript da radi pod IE6?
 
Uradis nesto ovako:

while($row = mysql_fetch_array($resultat)) {

echo "<img src=\"skript_koji_prikazuje_fotku.php?id_fotke=".$row["id_fotke"]."\">";

}


skript_koji_prikazuje_fotku.php ti cita iz baze odgovarajucu fotku i onda je ispucava... Nesto ovako

$id = $_GET["id_fotke"];
$upit = "SELECT fotke FROM tabela where id=$id";
$resultat = mysql_query($upit);
$data = mysql_fetch_assoc($resultat);
header("Content-type: image/jpg");
echo $data["fotke"];
 
..i prikaze samo jednu, to sam sve i ja vec probao. meni treba da prikaze sve fotografije koje se nalaze u koloni, ne samo jedna
 
Evo primer:

Kod:
 $media = "SELECT * FROM media WHERE id_nekretnine = '$id' AND first = 1";
$mresult = mysql_query ($media) or die ('Error: ' .mysql_error());
$num_media = mysql_num_rows ($mresult);

while ($mrow = mysql_fetch_assoc ($mresult)) {
    $fajl = $mrow['fajl'];
    createthumb ('uploads/'.$fajl.'','thumbs/'.$fajl.'',190,150);
    echo '<img src="thumbs/'.$fajl.'">';
}

Tako ces dobiti sve slike.

Ja inace imam svoju funkciju za resize (koja doduse koristi fajlove iz direktorijuma):
Kod:
	function createthumb($name,$filename,$new_w,$new_h){
	$system=explode('.',$name);
	if (preg_match('/jpg|jpeg/',$system[1])){
		$src_img=imagecreatefromjpeg($name);
	}
	if (preg_match('/png/',$system[1])){
		$src_img=imagecreatefrompng($name);
	}
	$old_x=imageSX($src_img);
	$old_y=imageSY($src_img);
	if ($old_x > $old_y) {
		$thumb_w=$new_w;
		$thumb_h=$old_y*($new_h/$old_x);
	}
	if ($old_x < $old_y) {
		$thumb_w=$old_x*($new_w/$old_y);
		$thumb_h=$new_h;
	}
	if ($old_x == $old_y) {
		$thumb_w=$new_w;
		$thumb_h=$new_h;
	}
	$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
	imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
	if (preg_match("/png/",$system[1]))
	{
		imagepng($dst_img,$filename); 
	} else {
		imagejpeg($dst_img,$filename); 
	}
		imagedestroy($dst_img); 
		imagedestroy($src_img); 
	}
 
Poslednja izmena:
Ocigledno se mi nismo dobro razumeli. Kod koji sam ti posalo je princip kako se stvari rade.
Da ne ostanem nedorecen saljem ti primer koji radi 100% (ja testirao bas ovaj kod) u bilo kom browseru:

Definicija tabele u bazi:
Kod:
CREATE TABLE `slikice` (                                                       
           `id` int(11) NOT NULL auto_increment,                                        
           `slika` varchar(255) collate utf8_unicode_ci NOT NULL,                       
           `tipslike` varchar(255) collate utf8_unicode_ci NOT NULL,                    
           `podaci_slike` blob NOT NULL,                                                
           PRIMARY KEY  (`id`)                                                          
         ) ENGINE=MyISAM

Prvi PHP skript: test.php

Kod:
<?php
$db=mysql_connect('localhost', "root","");
/*naravno ovde ide ime tvoje baze */
mysql_select_db('test22');

$result = mysql_query('select * from slikice') or die(mysql_error());

while($row = mysql_fetch_assoc($result)) {

echo "<img src=\"skript_koji_prikazuje_fotku.php?id_fotke=".$row["id"]."\">";

}

?>

Drugi PHP skript: skript_koji_prikazuje_fotku.php

Kod:
<?php
$db=mysql_connect('localhost', "root","");
mysql_select_db('test22');
$id = $_GET["id_fotke"];
$upit = "SELECT podaci_slike FROM slikice where id=$id";
$resultat = mysql_query($upit);
$data = mysql_fetch_assoc($resultat);
header("Content-type: image/jpg");
echo $data["podaci_slike"];
?>

Da ponovim opet. Ovaj kod ce izlistati sve slike iz tabele u bazi i prikazati ih na stranici. U bilo kom browseru.
 
Poslednja izmena:
BRAVOOO MAJSTORI !!!!
Hvala, probao sam sve što ste postovali i radii !!!

Veliki poz!!!!
 
Nazad
Vrh Dno