Loading...   Upload Image

Thumbnail und Kategorieauswahl.Forum » Webzone » PHP & MySQL » Thumbnail und Kategorieauswahl.

Neues Thema verfassen Neues Thema

  • DJaneMauziUser ist offline
    Beginner


    DJaneMauzi

    Registriert: 27.04.2008
    Beitraege: 42

    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(">","&gt;",addslashes($string));
    				$string = str_replace("<","&lt;",$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=") ?>



  • rompersUser ist offline
    Newbie


    rompers

    Registriert: 23.08.2012
    Beitraege: 3

    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


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider