Megváltoztatott kép másikmappába mentése
SZijasztok a következő lenne a problémám van egy kép feltöltő form-om, nah most ez feltölti egy mappába a képeket, aztán van egy kis php kódom, ami átalakítja a méretét és ki echo za a gelériába nah most az a probléma vele h mivel két kép lesz így a nagy meg a kicsi és mivel a függvény az összes fájlt beolvassa és kiírja ezért így a kicsi és a nagy is a gelériába lesz, nah most erre azt találtam ki h a kicsi képeket külön teszem egy másik mappába és csak azokat iratom ki, meg is csináltam, pontosabban kaptam jó ötleteket deh mégsem működik, esetleg vki vmi ötlet itt lenne a forrás
galleri.php:
<html>
<head>
<title>Képeim</title>
</head>
<body style="margin:0" bgcolor="#000000">
<center>
<?
$mappa="./kepek/";
$megnyit=@opendir($mappa);
while($fajl=@readdir($megnyit)){
if($fajl!="." && $fajl!="..")
echo '<img src="thumbnail.php?url=./kepek/' . $fajl . '" alt="' . $fajl . '" /> ';
}
?>
</center>
</html>
thumbnail.php:
<?php
define('THUMBNAIL_DIR', 'kicsi'); // ez volt az ötlet
function thumbnail($osrc, $trg, $nwidth = 200, $nheight = 200, $qual = 60) {
switch (strtoupper(substr($osrc, -4, 4))) {
case '.JPG':
case 'JPEG':
$src = imagecreatefromjpeg($osrc);
break;
case '.GIF':
$src = imagecreatefromgif($osrc);
break;
case '.PNG':
$src = imagecreatefrompng($osrc);
break;
default: $src = 0; break;
}
if (0===$src) return false;
$d = getimagesize($osrc);
$w = $d[0];
$h = $d[1];
if ($w && $h && ($w>$nwidth || $h>$nheight)) {
if ($w>$h) {
$tw = $nwidth;
$th = floor($h*$tw/$w);
} else {
$th = $nheight;
$tw = floor($w*$th/$h);
}
$img = imagecreatetruecolor($tw, $th);
imagecopyresampled($img, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
imagedestroy($src);
imagejpeg($img, $trg, $qual);
imagedestroy($img);
return true;
}
return false;
}
$url = $_GET['url'];
if (false!==strpos($url, '://')) {
header('Location: '.$_GET['url']);
} else {
$dir = dirname($url);
$file = basename($url);
$tnfile = $file.'.jpg';
$thumbnail_path = THUMBNAIL_DIR.'/tn_'.str_replace(array('/', '\'), array('_slash_', '_backslash_'), $dir).'_'.$tnfile;
header((file_exists($thumbnail_path) || (is_dir($dir) && file_exists($dir.'/'.$file) && is_file($dir.'/'.$file) && thumbnail($dir.'/'.$file, $thumbnail_path)))?('Location: '.$thumbnail_path):('Location: '.$_GET['url']));
}
?>
■ galleri.php:
<html>
<head>
<title>Képeim</title>
</head>
<body style="margin:0" bgcolor="#000000">
<center>
<?
$mappa="./kepek/";
$megnyit=@opendir($mappa);
while($fajl=@readdir($megnyit)){
if($fajl!="." && $fajl!="..")
echo '<img src="thumbnail.php?url=./kepek/' . $fajl . '" alt="' . $fajl . '" /> ';
}
?>
</center>
</html>
thumbnail.php:
<?php
define('THUMBNAIL_DIR', 'kicsi'); // ez volt az ötlet
function thumbnail($osrc, $trg, $nwidth = 200, $nheight = 200, $qual = 60) {
switch (strtoupper(substr($osrc, -4, 4))) {
case '.JPG':
case 'JPEG':
$src = imagecreatefromjpeg($osrc);
break;
case '.GIF':
$src = imagecreatefromgif($osrc);
break;
case '.PNG':
$src = imagecreatefrompng($osrc);
break;
default: $src = 0; break;
}
if (0===$src) return false;
$d = getimagesize($osrc);
$w = $d[0];
$h = $d[1];
if ($w && $h && ($w>$nwidth || $h>$nheight)) {
if ($w>$h) {
$tw = $nwidth;
$th = floor($h*$tw/$w);
} else {
$th = $nheight;
$tw = floor($w*$th/$h);
}
$img = imagecreatetruecolor($tw, $th);
imagecopyresampled($img, $src, 0, 0, 0, 0, $tw, $th, $w, $h);
imagedestroy($src);
imagejpeg($img, $trg, $qual);
imagedestroy($img);
return true;
}
return false;
}
$url = $_GET['url'];
if (false!==strpos($url, '://')) {
header('Location: '.$_GET['url']);
} else {
$dir = dirname($url);
$file = basename($url);
$tnfile = $file.'.jpg';
$thumbnail_path = THUMBNAIL_DIR.'/tn_'.str_replace(array('/', '\'), array('_slash_', '_backslash_'), $dir).'_'.$tnfile;
header((file_exists($thumbnail_path) || (is_dir($dir) && file_exists($dir.'/'.$file) && is_file($dir.'/'.$file) && thumbnail($dir.'/'.$file, $thumbnail_path)))?('Location: '.$thumbnail_path):('Location: '.$_GET['url']));
}
?>
bonyolult
Plusz néhány 5let:
Egyrészt csináld meg akkor a thumbnail-t, amikor feltöltöd a file-t, és nevezd el egyértelműen, pl.
kep.jpg esetén legyen thumb_kep.jpg, nem kell külön mappa sem.
kép típus megállapítása inkább ezt, mert a kiterjesztés nem túl "elegáns":
BL
válasz
Egy kis segítség
A következő lenne a problémám: van egy képfeltöltő úrlapom, ez tölti fel egy mappába a megadott képeket. Ezután egy PHP átméretezi, elmenti, majd megjeleníti egy galériában. Az a problémám vele, hogy mivel két kép lesz (egy nagy és egy kicsi), és a megjelenítő függvény az összes fájlt kiírja, ezért a kicsi és a nagy is a gelériában lesz.
Erre azt találtam ki, hogy a kicsi képeket egy másik mappába teszem és csak azokat iratom ki. Ezt meg is csináltam (pontosabban kaptam ötleteket hozzá), de mégsem működik.
Esetleg van valakinek ötlete, mit rontottam el? Íme a forrás:
a kód rendesen
egy hiba