Zend Framework Video Tutorial

- , ,

Leider habe ich zurzeit nur sehr wenig Zeit hier was zu schreiben, weshalb mein letzter Post auch schon viel zu lange her ist. Vor allem deshalb muss ich jetzt wieder einmal etwas schreiben… :-)

Ich hab mich diesen Monat ein wenig mit dem Zend Framework auseinander gesetzt und musste feststellen, dass der start in dieses riesige Framework nicht ganz so einfach ist wenn man noch nie etwas damit zu tun hatte. Nach längerem suchen habe ich aber auf YouTube sehr gute Video Tutorials von Alexander Romanenko gefunden welche mir wirklich sehr gut geholfen haben. Ich kann sie jedem, der neu in das Zend Framework einsteigen will nur empfehlen.

Bild verkleinern auf eine maximale Grösse

-

Wenn man ein Upload für Bilder hat, will man meistens die Grösse des Bildes beschränken welches hochgeladen werden soll. Die einfachste Möglichkeit dazu wäre, einfach eine Fehlermeldung auszugeben falls ein zu grosses Bild hochgeladen wurde. Doch wer ärgert sich nicht auch immer darüber wenn man ein Formular zweimal abschicken muss nur weil jetzt es nicht 100% ausgefüllt hat? Ist es nun nicht nur ein Feld, welches nicht ausgefüllt wurde, sondern gleich ein zu grosses Bild ärgert man sich nur noch mehr. Dies muss nicht sein, denn wir können das bild auch direkt auf dem Server verkleinern.
Ich habe eine kleine Funktion geschrieben welche genau dies macht:


function resizeImage($img_src, $maxheight, $maxwidth, $quality=90)
{
	// fals eine Grösse 0 ist wird sie auf 99999 gesetzt damit sie nicht beachted wird
	if($maxheight == 0) $maxheight = 99999;
	if($maxwidth == 0) $maxwidth = 99999;

	// Grösse auslesen
	$size        = getimagesize($img_src);
	$width_orig  = $size[0];
	$height_orig = $size[1];

	// Diese Boolean Variable entscheidet ob was am Bild geändert werden muss
	$redraw = false;

	if($height_orig > $maxheight && $maxheight != 0)
	{
		// ist das Bild zu hoch wird die Breite proportional zur Maximalhöhe verkleinert
		$newheight = $maxheight;
		$newwidth  = ceil($width_orig * $newheight / $height_orig);
		$redraw    = true;
	}
	else
	{
		$newwidth  = $width_orig;
		$newheight = $height_orig;
	}

	if($newwidth > $maxwidth && $maxwidth != 0)
	{
		// Ist das Bild zu breit wird die Breite proportional zur Breite verkleinert
		$newwidth  = $maxwidth;
		$newheight = ceil($newheight * $newwidth / $width_orig);
		$redraw    = true;
	}

	// falls nun das Bild verkleinert werden muss wird es nun neu gezeichnet.
	if($redraw)
	{
		// der Dateityp wird ermittelt
		$file_arr = explode(".", $img);
		$file_type = strtolower($file_arr[count($file_arr)-1]);

		// Das Bild muss je nach Dateityp anders eingelesen werden
		if($file_type == "png")
		{
			imagealphablending($img_src, true);
			$src_img = ImageCreateFromPNG($img_src);
		}
		elseif($file_type == "gif")
		{
			imagealphablending($img_src, true);
			$src_img = ImageCreateFromGIF($img_src);
		}
		else
			$src_img = ImageCreateFromJPEG($img_src);

		// Ein weisses Bild mit der oben berechneten Grösse wird erstellt
		$handle = ImageCreateTrueColor($newwidth, $newheight);
		$white = ImageColorAllocate($handle, 255, 255, 255);
		imagefill($handle, 1, 1, $white);

		// Unser Bild wird nun verkleinert und auf das eben erstellte weisse Bild gelegt.
		imageCopyResampled ($handle, $src_img, 0, 0, 0, 0, $newwidth, $newheight, $width_orig,  $height_orig);

		// Das alte Bild wird mit dem neuem überschrieben
		if ($file_type == 'png')
			imagepng($handle, $img_src, $quality);
		else if ($file_type == 'gif')
			imagegif($handle, $img_src);
		else
			imagejpeg($handle, $img_src, $quality);

		return 'Bild wurde verkleinert';
	}
		else return 'Bld musste nicht verkleinert werden';
}