Thumbnail und Kategorieauswahl.Forum » Webzone » PHP & MySQL » Thumbnail und Kategorieauswahl.
-
21.07.2012 um 14:07 Uhr
Hallo ich habe mal wieder ein paar Probleme!
Ich mchte gerne eine Bildergallerie erstellen, wo es nur PNG/Tubes/Render zur Auswahl gibt. Es klappt auch wunderbar so wie ich es mir vorgestellt habe, doch hier liegt auch das Problem. Die Thumbnail-Hintergrund ist Schwarz, allerdings wrde ich gerne den Hintergrund mit einem Bild verzieren. Allerdings finde ich keine passende Funktion.
Auch da ich mit Include arbeite, lsst sich die Kategorie nicht richtig einarbeiten.
Hier auf jedenfall mal meinen Code fr die Thumbnails.
<?php function endungx($datei) { $endung = explode(".",$datei); return ".".$endung[(count($endung)-1)]; } function zahl($string) { $erlaubt = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0"); $newstring = ""; for($i = 0;$i < strlen($string);$i++) { if(in_array($string{$i}, $erlaubt)) { $newstring .= $string{$i}; } } return $newstring; } $w = zahl($_REQUEST["w"]); $h = zahl($_REQUEST["h"]); $d = $_REQUEST["x"]; if(strtoupper(endungx($d)) == ".PNG") { include("image_png.php"); } else { class thumbnail { var $img; var $fileInfo; var $fullName; var $newX; var $newY; var $quality; var $orgX; var $orgY; var $imgtyp; // $data - (voller) Dateiname oder String (z.B. aus Datenbank) function create($data) { $this->destroy(); if (file_exists($data)) { $this->fullName = $data; $this->imgtyp = strtoupper($this->endung($data)); if($this->imgtyp == ".JPG") { $this->img = @ImageCreateFromJpeg($data); } elseif($this->imgtyp == ".GIF") { $this->img = @ImageCreateFromGif($data); } elseif($this->imgtyp == ".PNG") { $this->img = @ImageCreateFromPng($data); } $this->fileInfo = basename($data); } else { $this->img = @ImageCreateFromString($data); } if (!$this->img) { $this->destroy(); return false; } else { $this->orgX = ImageSX($this->img); $this->orgY = ImageSY($this->img); return true; } } public function endung($datei) { $endung = explode(".",$datei); return ".".$endung[(count($endung)-1)]; } public function umbruch($string) { $string = str_replace(">",">",addslashes($string)); $string = str_replace("<","<",$string); $string = str_replace("\n","<br />",$string); return $string; } // Hhe des aktuellen Bildes im Container zurckgeben, false bei Fehler function height() { if ($this->img) { return ImageSY($this->img); } else { return false; } } // Breite des aktuellen Bildes im Container zurckgeben, false bei Fehler function width() { if ($this->img) { return ImageSX($this->img); } else { return false; } } // Qualitt fr Ausgabe setzen function setQuality($quality = false) { if ($this->img && $quality) { $this->quality = $quality; } else { return false; } } // Thumbnail erzeugen function resize($newX = false,$newY = false) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); $newX = $this->_convert($newX,$X); $newY = $this->_convert($newY,$Y); if (!$newX && !$newY) { $newX = $X; $newY = $Y; } if (!$newX) { $newX = round($X / ($Y / $newY)); } if (!$newY) { $newY = round($Y / ( $X / $newX)); } if ( ! $newimg = ImageCreateTruecolor($newX,$newY)) { $newimg = ImageCreate($newX,$newY); } if ( ! ImageCopyResampled ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y)) { ImageCopyResized ($newimg, $this->img, 0, 0, 0, 0, $newX, $newY,$X,$Y); } $this->img = $newimg; return true; } else { return false; } } // Schneidet ein Bild neu zu /* Werte fr cut (X stellt das Ergebnis dar) $srcX +---+--------------+ $srcY | | | +---+---+ | | | X | $newY | Ursprungsbild | +---+ | | $newX | | | +------------------+ */ function cut($newX,$newY,$srcX = 0,$srcY = 0) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); $newX = $this->_convert($newX,$X); $newY = $this->_convert($newY,$Y); if (!$newX) { $newX = $X; } if (!$newY) { $newY = $Y; } if ( ! $newimg = ImageCreateTruecolor($X,$Y)) { $newimg = ImageCreate($X,$Y); } ImageCopy ($newimg,$this->img,0, 0, 0, 0,$X,$Y); ImageDestroy($this->img); if ( ! $this->img = ImageCreateTruecolor($newX, $newY)) { $this->img = ImageCreate($newX, $newY); } imagecopy ($this->img,$newimg, 0, 0,$srcX, $srcY, $newX, $newY); ImageDestroy($newimg); return true; } else { return false; } } /* schneidet ein Teil mit Gre newX und newY an festgelegten Stellen des Bildes zu $pos = Position welches Teil verwendet werden soll +---+---+---+ | 1 | 2 | 3 | +---+---+---+ | 4 | 5 | 6 | +---+---+---+ | 7 | 8 | 9 | +---+---+---+ */ function autocut($newX,$newY,$pos = 5) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); $newX = $this->_convert($newX,$X); $newY = $this->_convert($newY,$Y); if (!$newX) { $newX = $X; } if (!$newY) { $newY = $Y; } switch ($pos) { case 1: $srcX = 0; $srcY = 0; break; case 2: $srcX = round(($X / 2)-($newX/2)); $srcY = 0; break; case 3: $srcX = ImageSX($this->img) - $newX; $srcY = 0; break; case 4: $srcX = 0; $srcY = round(($Y / 2)-($newY/2)); break; case 5: $srcX = round(($X / 2)-($newX/2)); $srcY = round(($Y / 2)-($newY/2)); break; case 6: $srcX = $X-$newX; $srcY = round(($Y / 2)-($newY/2)); break; case 7: $srcX = 0; $srcY = $Y - $newY; break; case 8: $srcX = round(($X / 2)-($newX/2)); $srcY = $Y-$newY; break; case 9: $srcX = $X- $newX; $srcY = $Y - $newY; break; default: $srcX = round(($X / 2)-($newX/2)); $srcY = round(($Y / 2)-($newY/2)); } return $this->cut($newX,$newY,$srcX,$srcY); } else { return false; } } // erzeugt ein Quadrat des Bildes mit Kantenlnge von $size // ist das Bild nicht quadratisch kann mit $pos // der Bildausschnitt festgelegt werden, Werte siehe function autocut function cube($size,$pos = 5) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); if ($X > $Y) { $newX = false; $newY = $size; } elseif ($X < $Y) { $newX = $size; $newY = false; } else { $newX = $size; $newY = $size; } if ($this->resize($newX,$newY)) { return $this->autocut($size,$size,$pos); } else { return false; } } else { return false; } } // erzeugt ein Bild dessen grte Kantenlnge $size ist function maxSize($size) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); if ($X > $Y) { $newX = $size; $newY = false; } elseif ($X < $Y) { $newX = false; $newY = $size; } else { $newX = $size; $newY = $size; } return $this->resize($newX,$newY); } else { return false; } } // erzeugt ein Bild dessen kleinste Kantenlnge $size ist function minSize($size) { if ($this->img) { $X = ImageSX($this->img); $Y = ImageSY($this->img); if ($X > $Y) { $newX = false; $newY = $size; } elseif ($X < $Y) { $newX = $size; $newY = false; } else { $newX = $size; $newY = $size; } return $this->resize($newX,$newY); } else { return false; } } // speichert das Bild als $fileName // wird $filename angegeben muss es ein voller Dateiname mit Pfad sein // ist $override wahr wird ein bestehendes Bild berschrieben, sonst nicht // Rckgabe: // true wenn geschrieben (oder berschrieben) // false on error // 0 wenn schon existiert (nur bei $override=false) function save($fileName, $override = true) { if ($this->img) { if (!file_exists($fileName) || $override) { if($this->imgtyp == ".JPG") { if (ImageJPEG($this->img,$fileName,$this->quality)) { return true; } else { return false; } } elseif($this->imgtyp == ".GIF") { if (ImageGIF($this->img,$fileName,$this->quality)) { return true; } else { return false; } } elseif($this->imgtyp == ".PNG") { if (ImagePNG($this->img,$fileName,$this->quality)) { return true; } else { return false; } } } else { return 0; } } else { return false; } } // Gibt Bild an Browser aus (Ausgabe des Headers, Destroy aufrufen), beide optional function output($sendHeader = true,$destroy = true) { if ($this->img) { if ($sendHeader) { if($this->imgtyp == ".JPG") { header("Content-type: image/jpeg"); } elseif($this->imgtyp == ".GIF") { header("Content-type: image/gif"); } elseif($this->imgtyp == ".PNG") { header("Content-type: image/png"); } } if($this->imgtyp == ".JPG") { ImageJPEG($this->img,"",$this->quality); } elseif($this->imgtyp == ".PNG") { ImagePNG($this->img,"",$this->quality); } elseif($this->imgtyp == ".GIF") { ImageGIF($this->img,"",$this->quality); } if ($destroy) { $this->destroy(); } } else { return false; } } // Setzt die Werte in der Klasse frei und lscht Bild function destroy() { if ($this->img) { ImageDestroy($this->img); } $this->img = false; $this->fileInfo = false; $this->fullName = false; $this->newX = false; $this->newY = false; $this->quality = 70; $this->orgX = false; $this->orgY = false; $this->imgtyp = false; } // rechnet prozentuale Angaben in Pixel um, erwartet // ist $value eine Prozentangabe $full als 100% in Pixel angegeben werden function _convert($value,$full = false) { if (strstr($value,"%")) { $value = trim(str_replace ("%", "", $value)); $value = ($full / 100) * $value; } if ($value < 1 && $value !== false) { $value = 1; } return $value; } } } if(file_exists($d)) { $thumbnail = new thumbnail(); $thumbnail->create($d); $thumbnail->setQuality(100); $thumbnail->resize(floor(1.3*$w)); $thumbnail->autocut($w,$h,5); $thumbnail->output(); } ?>
Und hier ist der Code von meiner Renderseite.
<h1>Renders</h1> <form action="?x=Render" method="get"> <b>Series:</b> <select size="1" name="series"> <option value="">Alle anzeigen</option> <?php $erg = mysql_query("SELECT series FROM png GROUP BY series ORDER BY series") or die(mysql_error()); while($row=mysql_fetch_object($erg)) { echo '<option value="'.$row->series.'">'.$row->series.' ['.anzahl("png WHERE series = '".$row->series."'").']</option>'; } ?> </select> <input type="submit" value="Anzeigen" /> </form> <br /><br /> <center><table width="80%"> <tr> <?php $w = ""; $o = "ORDER BY timestamp"; if($_REQUEST["ordnen"] == "id") { $o = "ORDER BY id"; } elseif($_REQUEST["ordnen"] == "views") { $o = "ORDER BY views"; } if($_REQUEST["richtung"] != "AB") { $o .= " DESC"; } if(!empty($_REQUEST["series"])) { $w = "WHERE series = '".umbruch($_REQUEST["series"])."'"; } elseif(!empty($_REQUEST["autor"])) { $w = "WHERE autor = '".zahl($_REQUEST["autor"])."'"; } $seite = (isset($_REQUEST["seite"]) ? zahl($_REQUEST["seite"]) : 0); $proseite = 6; $prozeile = 3; $i = 0; $erg = mysql_query("SELECT * FROM png ".$w." ".$o." LIMIT ".$seite.", ".$proseite) or die(mysql_error()); while($row=mysql_fetch_object($erg)) { if($i%$prozeile == 0 && $i != 0) { echo "</tr><tr>"; } ?> <td width="26%" valign="top"> <span class="Ico1"><span class="tooltip"><a href="view.php?id=<?= $row->id ?>" target="_blank"><img src="images/vorschau.png" style="border: 0px none; margin: 0px; padding: 0px; background: url('image.php?w=150&h=106&x=images/Graphics/Render/<?= $row->id ?><?= $row->bild ?>') repeat-x scroll center bottom transparent;width:150px;height:106px" border="0" /><span>by <?= value("users WHERE id = '".$row->autor."'","name") ?></span></a></span> </span></td> <?php $i++; } ?> </tr> </table></center> <br /> <?= seite("png",$seite,$proseite,"?x=Render&seite=") ?>
-
23.08.2012 um 11:49 Uhr
Hallo DJaneMauzi,
versuche diesen Code in deinem Code fr PNG einzubauen.
Bei meinen Capcha geht das so
Da ich gerade einen Engpass an Zeit habe kann ich mir das erst zum WE anschauen
//Hintergrund $bg = "background.png"; //Orginal $ov = "overlay.png"; $Grafik2 = imagecreatefrompng($ov); $Grafikhilf = imagecreatefrompng($bg); $Grafik = imagecreatefrompng($bg); imagecopy($Grafik, $Grafik2, 0, 0, 0, 0, 400, 120); imagepng($Grafik); imagedestroy($Grafik);
LG rompers
[ 1 ]
Seite 1 von 1