|
zdenek Profil |
#1 · Zasláno: 6. 5. 2011, 16:24:28
ahoj, prosímvás, dělám fotogalerii a potřebuju udělat thumbnails (miniatury) ale vůbec nevím, jak začít. prosím o poskytnutí pomoci. stačí materiály. (ale něco srozumitelného prosím :-) ) předem díky.
|
|
|
zdenek Profil |
#3 · Zasláno: 6. 5. 2011, 16:33:20
ShiraNai7:
díky, a šlo by to prosím podrobněji??
|
|
|
breeta Profil |
#4 · Zasláno: 6. 5. 2011, 16:37:23 · Upravil/a: breeta
nejlepší když použiješ nějakou hotovou třídu
Pokud cheš zjistit jak to jede pomocí GD
Případně Imagemagick který je psaný už OOP, ale musíš ho nainstalovat a ne každy hosting ho má.
|
|
|
zdenek Profil |
#6 · Zasláno: 8. 5. 2011, 09:51:16
Ben:
a jak by vypadaly ty drobné úpravy?
|
|
|
Ben Profil * |
#7 · Zasláno: 8. 5. 2011, 10:47:25
Pokud se tit o bude chtit lustit, tak tady to mas cely script na ukladani fotek + zapisovani hodnot do MYSQL, a ty nahledy si v tom najdes, je to popsane.
Pokud neco nechapes, napis.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../default.css">
<title>
Vložit fotku do galerie
</title>
</head>
<body>
<?php
//pripojeni k mysql
require_once("../config.php");
//odstraneni diakritiky(upravena funkce od php.vrana.cz)
function odstran_diakritiku($in){
$in = preg_replace('~[^\\pL0-9_]+~u', '-', $in);
$in = trim($in, "-");
$in = iconv("utf-8", "us-ascii//TRANSLIT", $in);
$in = strtolower($in);
$out = preg_replace('~[^-a-z0-9_]+~', '', $in);
return $out;
}
//nastaveni promenych
$popis = odstran_diakritiku($_POST["popis"]);
//$popis = trim($_POST["popis"]);
//$popis = preg_replace('~\s~','',$popis);
$popis = mysql_real_escape_string($popis);
$popis_s_mezerami = trim($_POST["popis"]);
$popis_s_mezerami = mysql_real_escape_string($popis_s_mezerami);
$rok = mysql_real_escape_string($_POST["rok"]);
$fotka = trim($_FILES["image"]["name"]);
$fotka = preg_replace('~\s~','',$fotka);
$soubor = $rok."-".$popis."-".date("Y-m-d_H-i-s")."-".$fotka;
$sql = 'INSERT INTO foto (
`id`, `soubor`, `rok`, `popis`)
VALUES (
NULL, \''.$soubor.'\', \''.$rok.'\', \''.$popis_s_mezerami.'\');
';
/** Vrácení rozměrů obrázku po zmenšení
* @param string název zmenšovaného souboru
* @param int maximální šířka výsledného obrázku, 0 pokud na ní nezáleží
* @param int maximální výška výsledného obrázku, 0 pokud na ní nezáleží
* @return array ($width, $height) výsledná šířka a výška
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function image_shrink_size($file_in, $max_x = 0, $max_y = 0) {
list($width, $height) = getimagesize($file_in);
if (!$width || !$height) {
return array(0, 0);
}
if ($max_x && $width > $max_x) {
$height = round($height * $max_x / $width);
$width = $max_x;
}
if ($max_y && $height > $max_y) {
$width = round($width * $max_y / $height);
$height = $max_y;
}
return array($width, $height);
}
/** Převzorkování obrázku GIF, PNG nebo JPG
* @param string název zmenšovaného souboru
* @param string název výsledného souboru
* @param int šířka výsledného obrázku
* @param int výška výsledného obrázku
* @return bool true, false v případě chyby
* @copyright Jakub Vrána, http://php.vrana.cz/
*/
function image_resize($file_in, $file_out, $width, $height) {
$imagesize = getimagesize($file_in);
if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) {
return false;
}
if ($imagesize[0] == $width && $imagesize[1] == $height) {
return copy($file_in, $file_out);
}
switch ($imagesize[2]) {
case 1: $img = imagecreatefromgif($file_in); break;
case 2: $img = imagecreatefromjpeg($file_in); break;
case 3: $img = imagecreatefrompng($file_in); break;
default: return false;
}
if (!$img) {
return false;
}
$img2 = imagecreatetruecolor($width, $height);
imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
if ($imagesize[2] == 2) {
return imagejpeg($img2, $file_out);
} elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
imagetruecolortopalette($img2, false, 256);
return imagegif($img2, $file_out);
} else {
return imagepng($img2, $file_out);
}
}
//zpracovani po odeslani
if($_POST["ok"]){
//overovani, zda jsou vyplnena vsechna povinna pole
if($_POST["rok"] && $_POST["popis"] && $_FILES["image"]){
//vytvoreni a ulozeni nahledu nahraneho obrazku
//vytvoreni nahledu o maximalni veliskosti (sirka=120, vyska=80)
list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 120, 80);
if ($width && $height){
//adresar kde se ulozi nahled obrazku, pojmenovany stejne jako original, jen na bude zacina thumb_...
$filename = "../img/uploaded/foto/thumb_".$soubor;
image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
}
//nahrani obrazku
if($_FILES["image"]["size"] > 0){
//povolene koncovky
$koncovky = array('jpg', 'jpeg', 'png', 'gif');
$chyba = "";
if (!$_FILES || $_FILES["image"]["error"] == UPLOAD_ERR_INI_SIZE) {
$chyba = "<p class=\"error\">Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif ($_FILES["image"]["error"] == UPLOAD_ERR_NO_FILE) {
$chyba = "<p class=\"error\">Nevybrali jste soubor, který chcete nahrát.</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif ($_FILES["image"]["error"]) {
$chyba = "<p class=\"error\">Soubor se nepodařilo nahrát!</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif (!in_array(strtolower(pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION)), $koncovky)) {
$chyba = "<p class=\"error\">Koncovka souboru musí být jedna z: " . implode(", ", $koncovky) . ".</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
elseif (!($imagesize = getimagesize($_FILES["image"]["tmp_name"])) || $imagesize[2] > 3) {
$chyba = "<p class=\"error\">Typ obrázku musí být JPG, JPEG, PNG nebo GIF.</p>\n";
$chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
else {
//vytvoreni velkeho obrazku o maximalnich rozmerech(sirka=900, vyska=692)
list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 900, 692);
if ($width && $height){
//cesta kam se to ma ulozit(slozka musi mit nastaven chmod=0777)
$filename = "../img/uploaded/foto/".$soubor;
image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
}
//move_uploaded_file($_FILES["image"]["tmp_name"], "../img/uploaded/foto/$soubor");
}
}
//ulozit data do MySQL
if(mysql_query($sql)){
echo"<p>Data byla úspěšně uložena!</p><br><br>";
echo"<p><a href=\"insert_to_photos.php\">Nahrát další obrázek</a></p>";
echo"<p><a href=\"../admin/\">Do administrační sekce</a></p>";
$send = true;
}
else{
echo "<p class=\"error\"><strong>Uložení dat do databáze selhalo!</strong>Zkus to znovu.</p>";
echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
}
else{
echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>";
echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form
|
|
|
Ben Profil * |
#8 · Zasláno: 8. 5. 2011, 10:48:54
ha, nevejde se to sem cele, takze pokracovani...
else{
echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>";
echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
}
}
//zobrazeni formulare
else{
?>
<p align="left">Vyplneni vsech poli je povinne.</p><br><br>
<form name="vlozit" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Rok:</td>
<td colspan="2">
<select name="rok">
<option value="">Vyber rok...*</option>
<?php
//vytvori rolovatko s roky od roku 1994 do soucasneho
for($rok = 1994; $rok <= date("Y"); $rok++){
echo"<option value=\"$rok\""; if(!isset($send)){echo $_POST["rok"]==$rok ? "selected" : "";} echo">$rok</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Obrázek:</td>
<td><input type="file" name="image" accept="image"></td>
<td><i>klikni a vyber *.jpg, *,jpeg, *.png nebo *.gif soubor</i></td>
</tr>
<tr>
<td>Popis:</td>
<td><textarea name="popis" cols="40" rows="3" maxlength="999"><?php if(!isset($send)){echo $_POST["popis"];}?></textarea></td>
<td><i>tento text bude zobrazen jako titulek a zaroven jako popisek k fotce</i></td>
</tr>
<tr>
<td><input type="submit" name="ok" value="Uložit"></td>
</tr>
</table>
</form>
<br>
<p><a href="../admin/">Zpět do administrační sekce</a> </p>
<?php
}
?>
</body>
</html>
|
|
|
zdenek Profil |
#9 · Zasláno: 8. 5. 2011, 11:27:53
Ben:
díky, přeberu si to a použiju, co se mi bude hodit.
|
|