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 möchte 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 würde ich gerne den Hintergrund mit einem Bild verzieren. Allerdings finde ich keine passende Funktion.

    Auch da ich mit Include arbeite, lässt sich die Kategorie nicht richtig einarbeiten.

    Hier auf jedenfall mal meinen Code für 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;
    			}
    		
    			// Höhe des aktuellen Bildes im Container zurückgeben, false bei Fehler
    			function height()
    			{
    				if ($this->img) {
    					return ImageSY($this->img);
    				} else {
    					return false;
    				}
    			}
    		
    			// Breite des aktuellen Bildes im Container zurückgeben, false bei Fehler
    			function width()
    			{
    				if ($this->img) {
    					return ImageSX($this->img);
    				} else {
    					return false;
    				}
    			}
    		
    			// Qualität für 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 für 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 Größe 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 Kantenlänge 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 größte Kantenlänge $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 Kantenlänge $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
    			// Rückgabe:
    			//		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 löscht 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 für 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


Affiliates:   Blue-Graphics  •   Pat DG  •   Colorful Gfx  •   Chibi Graphics  •   Gallery Yuri  •   Design Grafixx  •   The Seduction  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider