Antworten auf deine Fragen:
Neues Thema erstellen

Dynamische spiegelung erstellen und speichern?

Syranus

Noch nicht viel geschrieben

Hallo,

hab da mal eine ganz "verrückte" frage/idee:

Ist es mit irgendeiner Programmiersprache möglich, dass eine Grafik gespiegelt wird, nach unten hin "ausblendet" (ihr wisst schon, dieser standart spiegeln effekt, wo das bild dann weiter unten 100% transparent ist...) und das ganze noch als versendbare datei abspeichert? Natürlich alles webbasiert!

was ich damit erreichen soll/will. hab für einen "guten bekannten" einen kino-newsletter erstellt. in diesem wird drauf hingewiesen, welche filme in dieser woche wann laufen. im photoshop hab ich dann den einzelnen plakaten noch diesen spiegelungseffekt zugewiesen, und das sieht nunmal sehr schick im gesamtkonzept aus.

so, da nun aber das programm und die filme sehr oft wechseln, muss jede woche ein neuer newsletter erstellt werden. dazu habe ich eine eingabemaske gemacht, in die er alles eintragen kann. also film-poster angibt, die spielzeiten eingibt name usw.... auf der nächsten seite werden dann die gemachten eingaben alle in das end-design versetzt. das funktioniert auch mit allem ganz gut..... aber die spiegelung fehlt halt. und ich kann ihm die nicht jede woche machen ;)


also. kann man sowas realisieren, oder ist das nahezu unmöglich? ich dachte da schon an flash. aber das problem ist ja dann das versenden nachher =/ weil html-emails sind ja schon sehr schwierig unter den mann zu bringen, dann noch flash?!


vielen dank schonmal,

syranus
 

msblacky

Helper

AW: Dynamische spiegelung erstellen und speichern?

Hallo,

hast Du es evtl. schon mal mit einer Aktion versucht in PS.

msblacky
 

fakerer

Aktives Mitglied

AW: Dynamische spiegelung erstellen und speichern?

Hast du schon mal überlegt das ganze in Flash zu machen? Denke geht eher als mit reinen Scriptsprachen.
Wobei ich mit dem Bilderexport aus einem swf immer so meine Probleme habe :(.
 

cebito

undefined

AW: Dynamische spiegelung erstellen und speichern?

Hast du schon mal überlegt das ganze in Flash zu machen? Denke geht eher als mit reinen Scriptsprachen.
Wobei ich mit dem Bilderexport aus einem swf immer so meine Probleme habe :(.

Warum sollte es mit Flash eher/besser gehn? Hab ja oben schon nen Link gepostet, dafür braucht man keine teure Entwicklungsumgebung. Geht im Übrigen auch mit JavaScript, wobei ich das eigentlich aus mehreren Gründen ausgelassen hab. Aber der Vollständigkeit halber:
 

Syranus

Noch nicht viel geschrieben

AW: Dynamische spiegelung erstellen und speichern?

hallo,

also der link von vebito funktioniert nicht so ganz.... ich komm zwar auf die seite, kann den code aber nicht benutzen. ich erhalte immer den fehler:

Warning: imagejpeg() [function.imagejpeg]: Unable to open 'testbild.jpg' for writing: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/testbereich/wetfloor-effect.php on line 257

in zeile 257 des php codes steht folgendes:


imagejpeg($this->tempImage, $filedestination, $compress);


hab als bilder folgendes angelegt:
5.JPG
6.JPG
7.JPG
9.JPG

das testbild.jpg sollte ja eigentlich generiert werden denke ich. aber auch wenn ich das anlege bekomme ich den gleichen fehler....

die angegebene testdatei von der webseite existiert auch nichtmehr... somit kann ich nichtmal nachschauen wie die das gemacht haben. für die, die den code brauchen:

aufrufende seite:
Code:
<?php 

include_once 'wetfloor-effect.php'; 

$pictures[0] = '5.JPG'; 
$pictures[1] = '6.JPG'; 
$pictures[2] = '9.JPG'; 
$pictures[3] = '7.JPG'; 

$wetfloor = new WetFloorEffect( ); 

$wetfloor -> setimages( $pictures ); 

$wetfloor -> setEnvironment( 10, 5, 600, 180, "000000" ); 

$wetfloor -> createWetFloor(); 

$wetfloor -> createText("Copyright 2009 SELFPHP OHG", "4c4c4b", 2); 

$wetfloor -> createImage("testbild.jpg", 90); 

?>
hab ich bei mir in den body-teil einer komplett leeren seite geschrieben ums zu testen.

hier der php code der seite, die die spiegelungen erstellen soll (wetfloor-effect.php)
Code:
<?php 

/** 
 * Create wet floor effect 
 *  
 * @author SELFPHP OHG 
 * @copyright 2009, SELFPHP OHG 
 * @license BSD License 
 * @link [url=http://www.selfphp.de]PHP - SELFPHP: Version 5.3.4 Befehlsreferenz - Tutorial &ndash; Kochbuch &ndash; Forum zum Thema PHP[/url]  
 *  
 */ 

class WetFloorEffect { 
     
    /** 
     * @var array Images 
     */ 
    private $images    =    array(); 
     
    /** 
     * @var Integer Rahmen um Grafik 
     */ 
    private $imgBorder    =    0; 
     
    /** 
     * @var Integer Abstand zwischen den einzelnen Bilder 
     */ 
    private $imgPadding    =    0; 
     
    /** 
     * @var Integer Bildbreite 
     */ 
    private $imgWidth    =    0; 
     
    /** 
     * @var Integer Bildhöhe 
     */ 
    private $imgHeight    =    0; 
     
    /** 
     * @var Array Farbe 
     */ 
    private $imgRGB    =    array(); 
     
    /** 
     * @var Image Temp Image 
     */ 
    private $tempImage    = NULL; 
     
     
    /** 
      * Bilder festlegen   
      *   
      * @param    array    $img    Ein Array mit den Pfad zu den Bildern 
      *  
      */  
    public function setimages( $img = array( NULL ) ){ 
         
        unset ( $this->images ); 
         
        for ( $i = 0; $i < count( $img ); $i++ ) { 
         
            if ( file_exists( $img[$i] ) ) 
                $this->images[] = $img[$i]; 
             
        } 
         
    } 
     
    /** 
      * Bild-Optionen festlegen   
      *   
      * @param    integer    $border           Rahmenbreite 
      * @param    integer    $padding          Abstand zwischen den Bildern 
      * @param    integer    $width            Bildbreite 
      * @param    integer    $height           Bildhöhe 
      * @param    string     $backgroundColor  Hintergrundfarbe 
      *  
      */  
    public function setEnvironment( $border = 10, $padding = 5, $width = 200, $height = 100, $backgroundColor = "ffffff"){
         
        $this->imgBorder = $border; 
         
        $this->imgPadding = $padding; 
         
        $this->imgWidth = $width; 
         
        $this->imgHeight = $height; 
         
        $this->imgRGB['r'] = hexdec( substr( $backgroundColor, 0, 2 ) );  
        $this->imgRGB['g'] = hexdec( substr( $backgroundColor, 2, 2 ) );  
        $this->imgRGB['b'] = hexdec( substr( $backgroundColor, 4, 2 ) );  
         
    } 
     
    /** 
      * Effekt erstellen   
      *   
      */  
    public function createWetFloor(){ 
         
        $this->tempImage = imagecreatetruecolor( $this->imgWidth, $this->imgHeight );  
         
        $color = imagecolorallocate($this->tempImage, $this->imgRGB['r'], $this->imgRGB['g'], $this->imgRGB['b']);  
         
        imagefill($this->tempImage, 0, 0, $color);  
         
        $picsCount = count( $this->images ); 
         
        if ( $picsCount == 0 ) 
            return false; 
             
        $widthPic = ($this->imgWidth - (( $this->imgBorder * 2) + (( $picsCount - 1) * $this->imgPadding))) / $picsCount; 
        $heightPic = ($this->imgHeight - (( $this->imgBorder * 2))) - 60; 
         
        $left = $this->imgBorder; 
         
        for ( $i = 0; $i < $picsCount; $i++ ){ 
             
            $tempImage = $this->createThumbnail( $this->images[$i], $widthPic, $heightPic); 
             
            $tempImage = $this->reflection($tempImage); 
             
            $simgx = imagesx($tempImage); 
            $simgy = imagesy($tempImage); 
         
            imagecopyresampled( $this->tempImage, $tempImage, $left, $this->imgBorder, 0, 0, $simgx, $simgy, $simgx, $simgy); 
             
            $left += $widthPic + $this->imgPadding; 
             
        } 
         
        return true; 
    } 
     
    /** 
      * Spiegelung erstellen   
      *   
      */  
    private function reflection ( $image ) { 
         
        $imageX = imagesx( $image ); 
        $imageY = imagesy( $image ); 
         
        $gradient = round( $imageY * 0.55 ) - $this->imgBorder; 
        
        $imageBack = imagecreatetruecolor( $imageX, $imageY + $gradient ); 
         
        $color = imagecolorallocate( $imageBack, $this->imgRGB['r'], $this->imgRGB['g'], $this->imgRGB['b'] ); 
         
        imagefill( $imageBack, 0, 0, $color ); 
         
        imagecopy( $imageBack, $image, 0, 0, 0, 0, $imageX, $imageY ); 
                        
        $flipImage = imagecreate( $imageX, $imageY ); 
         
        for ( $y = 0; $y < $imageY; $y++ ) { 
             
            imagecopy( $flipImage, $image, 0, $y, 0, $imageY - $y - 1, $imageX, 1 ); 
             
        } 
                 
        imagecopy($imageBack, $flipImage, 0, $imageY, 0, 0, $imageX, $imageY); 

         
        $alpha = 70 / ( $gradient - 1 ); 
         
        for ( $i = 0; $i < $gradient; $i++ ) { 
             
            if ($i == 0) 
                $col = imagecolorallocatealpha( $imageBack, $this->imgRGB['r'], $this->imgRGB['g'], $this->imgRGB['b'], 0 ); 
            else 
                $col = imagecolorallocatealpha( $imageBack, $this->imgRGB['r'], $this->imgRGB['g'], $this->imgRGB['b'], 70 - $i * $alpha ); 
             
                imageline( $imageBack, 0, $imageY + $i, $imageX, $imageY + $i, $col ); 
                 
        } 

        return $imageBack; 
         
    } 
     
    /** 
      * Text erstellen   
      *  
      * @param    string     $text       Der zu zeichnende Text 
      * @param    string     $textColor  Schriftfarbe 
      * @param    string     $size       Schriftgröße 
      *   
      */    
    public function createText( $text = "", $textColor = "ffffff", $size = 4) { 
         
        $r = hexdec( substr( $textColor, 0, 2 ) );  
        $g = hexdec( substr( $textColor, 2, 2 ) );  
        $b = hexdec( substr( $textColor, 4, 2 ) );  

        $farbe_b = imagecolorallocate ( $this->tempImage, $r, $g, $b ); 

        imagestring ( $this->tempImage, $size, 10, $this->imgHeight - 20, $text, $farbe_b ); 

    } 
     
    /**  
     * Thumbnail erstellen  
     */  
    private function createThumbnail( $imgSource = NULL, $width, $height ){  
      
        $info = getimagesize( $imgSource );  
          
        if ( $info[2] == 1 ){  
            // GIF  
            $image = imagecreatefromgif( $imgSource );  
        }  
        elseif ( $info[2] == 2 ){  
            // JPG  
            $image = imagecreatefromjpeg( $imgSource );  
        }  
        elseif ( $info[2] == 3 ){  
            // PNG  
            $image = imagecreatefrompng( $imgSource );  
        }  
        else{  
            $image = NULL;  
        }  
          
        if ( $image !== Null ){  
              
            $imageNew = imagecreatetruecolor( $width, $height );  
              
            imagecopyresampled( $imageNew, $image, 0, 0, 0, 0, $width,$height, $info[0], $info[1]);  
                          
        }  
         
        return $imageNew; 
              
    }  
     
     
     /** 
      * Bild speichern   
      *   
      * @param    string    $filedestination    Pfad für neue Datei  
      *  
      * @param    integer   $compress           Komprimierung 
      *   
      */  
    public function createImage( $filedestination = NULL, $compress = 85){  
          
        imagejpeg($this->tempImage, $filedestination, $compress);     
                  
    }  
     
     
    public function __deconstruct() { 
         
        imagedestroy( $this->tempImage );  
         
    } 
         
} 

?>
steht bei mir ebenfalls im body-tag einer leeren seite.


ich gebs auch ehrlich zu: ich versteh garnicht genau was da abgearbeitet wird.... sollte mir aber auch egal sein, solang es funktioniert ;P

vorschläge zur lösung?

und bei dem javascript-tool von hantario.de tut sich irgendwie auch nichts ._." und das obwohl ich alle dateien und ordner so organisiert hab, wie es beim html-code steht.... ich erhalte immer nur eine leere seite ohne irgendwas..... nichtmal wenn ich noch ein <p> reinsetze seh ich etwas ._."


achja:
@msblacky: Photoshop-Aktion fällt flach, da er kein Photoshop hat, und die bilder jede woche neu erstellt werden müssten. das kann ich nicht (hab ja auch n leben ;P ) somit müsste das über n webbasiertes tool gehen...

danke schonmal/nochmal,
syranus
 

cebito

undefined

AW: Dynamische spiegelung erstellen und speichern?

Ein Rechteproblem? Schau mal nach den Schreibrechten für das Verzeichnis...
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.640
Beiträge
1.538.506
Mitglieder
67.560
Neuestes Mitglied
azmostbethaot
Oben