:: Anbieterverzeichnis :: Globale Branchen
:: SELFPHP Forum ::
Fragen rund um die Themen PHP?
In über
130.000 Beiträgen finden Sie sicher die passende
Antwort! ![](/src/link.gif)
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
|
Motion-Effekt für Vorschaubilder erstellen ![](/src/transparent.gif) |
|
SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an.
Weitere Informationen
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 2014, 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
![](./src/uebersicht.gif)
|
|
|
|
|
![](/src/transparent.gif)
![](http://www.selfphp.de/src/dmsolutions-selfphp.gif)
:: Anbieterverzeichnis ::
Webhosting/Serverlösungen
Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?
Sie sind nur ein paar Klicks davon entfernt! ![](/src/link.gif)
Ausgewählter Tipp im Bereich PHP-Skripte
Vorschaubilder erstellen
Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
|