:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Motion-Effekt für Vorschaubilder erstellen |
Beispielaufgabe
Nachfolgend stellen wir Ihnen eine Klasse in PHP5 vor, mit der Sie komfortabel Vorschaubilder erstellen und die generierten Vorschaubilder mit einem Motion-Effekt versehen können. Die Klasse ist so konzipiert, dass Sie entweder nur die Vorschaubilder oder zusätzlich auch den Motion-Effekt generieren lassen können. Nachfolgend sehen Sie einige so erstellte Vorschaubilder mit einer abstufenden oder gleichbleibenden Transparenz.
Aufruf für die Erzeugung der vorherigen Beispiele:
Bild 1 - gleichbleibende Transparenz (70% Deckung):
$motion -> createMotion( 5, "ffffff", false, 70 );
Bild 2 - gleichbleibende Transparenz (30% Deckung):
$motion -> createMotion( 5, "ffffff", false, 30 );
Bild 3 - abstufende Transparenz:
$motion -> createMotion( 5, "ffffff" );
Als Wert für den Motion-Effekt benötigt die Klasse die Anzahl der Linien (im Beispiel "5" für 5 Linien), die Hintergrundfarbe (im Beispiel "ffffff" für weiß), den optionalen Parameter für abstufende oder gleichbleibende Transparenz (true oder false) und zuletzt den optionalen Parameter für die Deckkraft (0-100 wenn der vorherige Parameter auf false gesetzt wird).
example.php
Nachfolgend sehen Sie den Zugriff auf die Klasse. Schon bei der Instanzierung der Klasse wird die Datei für das Vorschaubild und die neue Größe (Breite und Höhe) mit angegeben.
<?php
include_once("ImageManipulation.php");
$motion = new ImageManipulation( "pictures/DSC_0233.png", 150, 100 );
$motion -> createMotion( 5, "ffffff", false, 70 );
$motion -> createImage( "dsc-small.jpg" );
?>
<img src="dsc-small.jpg" />
|
ImageManipulation.php
Hier sehen Sie noch die vollständige Klasse für die Erzeugung des Vorschaubildes und des Motion-Effekts.
<?php
/**
* Image Manipulation
* Motion-Effect
*
* @author SELFPHP OHG
* @copyright 2009, SELFPHP OHG
* @license BSD License
* @link http://www.selfphp.de
*
* Example 1:
* $motion = new ImageManipulation( "pictures/DSC_0233.png", 150, 100 );
* $motion -> createMotion( 5, "ffffff", false, 70 );
* $motion -> createImage( "dsc-small.jpg" );
*
* Example 2:
* $motion = new ImageManipulation( "pictures/DSC_0233.png", 150, 100 );
* $motion -> createMotion( 5, "ffffff" );
* $motion -> createImage( "dsc-small.jpg" );
*
*/
class ImageManipulation {
/**
* @var string Dateipfad Original-Bild
*/
private $resource = NULL;
/**
* @var image Thumbnail
*/
private $imageNew = NULL;
/**
* @var integer Breite Thumbnail
*/
private $widthNew = NULL;
/**
* @var integer Höhe Thumbnail
*/
private $heightNew = NULL;
/*
* Constructor
*
* @param string $resourceFile Dateipfad Original-Bild
* @param integer $width Bildbreite Thumbnail
* @param integer $height Bildhöhe Thumbnail
*
*/
function __construct( $resourceFile, $width, $height ) {
if ( file_exists ( $resourceFile ) == TRUE ){
$this->resource = $resourceFile;
$this->widthNew = $width;
$this->heightNew = $height;
$this->createThumbnail ();
}
}
/**
* Thumbnail erstellen
*/
private function createThumbnail( ){
$info = getimagesize( $this->resource );
if ( $info[2] == 1 ){
// GIF
$image = imagecreatefromgif( $this->resource );
}
elseif ( $info[2] == 2 ){
// JPG
$image = imagecreatefromjpeg( $this->resource );
}
elseif ( $info[2] == 3 ){
// PNG
$image = imagecreatefrompng( $this->resource );
}
else{
$image = NULL;
}
if ( $image !== Null ){
$this->imageNew = imagecreatetruecolor( $this->widthNew, $this->heightNew );
imagecopyresampled( $this->imageNew, $image, 0, 0, 0, 0, $this->widthNew,
$this->heightNew, $info[0], $info[1]);
}
}
/*
* Motion-Effekt erstellen
*
* @param integer $lines Anzahl der Linien für den Effekt
* @param string $fillcolor Hintergrundfarbe
* @param boolean $effect Motion-Effect mit abstufender Transparenz (true)
* @param integer $effect Gleichbleibende Transparenz(0-100) (wenn $effect = false)
*
*/
public function createMotion( $lines, $fillcolor, $effect = true, $trans = 70 ){
$stepHigh = $this->heightNew - ($lines * 2);
$stepWidth = $this->widthNew - ($lines * 2);
$r = hexdec( substr( $fillcolor, 0, 2 ) );
$g = hexdec( substr( $fillcolor, 2, 2 ) );
$b = hexdec( substr( $fillcolor, 4, 2 ) );
$image = imagecreatetruecolor( $this->widthNew, $this->heightNew );
$color = imagecolorallocate($image, $r, $g, $b);
imagefill($image, 0, 0, $color);
imagecopyresampled( $image, $this->imageNew , 0, 0, 0, 0, $stepWidth, $stepHigh,
$this->widthNew, $this->heightNew);
imagecopyresampled( $this->imageNew, $image , 0, 0, 0, 0,$this->widthNew,
$this->heightNew, $this->widthNew, $this->heightNew);
for( $x = 0; $x < $lines; $x++ ){
if ( $effect == true )
$opacity = max(0, 80-($x*(65 / $lines)));
else
$opacity = $trans;
for($y = 0; $y < $stepHigh; $y++)
{
imagecopymerge($this->imageNew, $image, $stepWidth+(2*$x) + 1, $y+(2*$x)+2,
$stepWidth -1, $y+1, 1, 1, $opacity);
}
for($y = 0; $y < $stepWidth; $y++)
{
imagecopymerge($this->imageNew, $image, $y+(2*$x)+2,$stepHigh+(2*$x)+1, $y+1,
$stepHigh-1, 1, 1, $opacity);
}
}
imagedestroy( $image );
}
/*
* Bild speichern
*
* @param string $filedestination Pfad für neue Datei
*
*/
public function createImage( $filedestination = NULL){
imagejpeg($this->imageNew, $filedestination, 85);
}
}
?>
|
Download
ImageManipulation.zip
|
|
|
|
|
|