php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.02.2008, 11:30  
Erfahrener Benutzer
 
Registriert seit: 16.12.2003
Beiträge: 125
Broadcast
Standard Transparentes Bild über Bild legen *update gelöst*

Hi Leute,
ich habe leider im Forum und auf php.net keine richtige Funktion gefunden daher wende ich mich direk an euch.

Ich habe ein JPEG Bild (200x200) welches via Script (GDLib) eingelesen werden soll. Ich habe also Bild-Org in einer Variable und möchte nun eine zu 50% transparente Version dieses Bildes über das Original Bild legen (Bild-Org). Das tranparente Bild soll dabei 2px nach links abweichen. Somit entsteht ein Wackeleffekt.

Wie mach ich ein Bild daher zu einer bestimten Prozentanzahl transparent? Damit ich dieses über mein original Bild legen kann.

thx im voraus!
Broadcast ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.02.2008, 11:34  
CIX88
Gast
 
Beiträge: n/a
Standard

Vielleicht imagecopymerge() ...
  Mit Zitat antworten
Alt 01.02.2008, 12:11  
Erfahrener Benutzer
 
Registriert seit: 16.12.2003
Beiträge: 125
Broadcast
Standard

Hi Leute,
hab das Problem von allein lösen können. Ich hab nun via GDLib einen Blur effect erzeugt. Das Resultat ist folgendes:



PHP-Code:
<?
   
///////////////////////////////////////
      
    
header('Content-Type: image/jpeg');
    
$DEST_TMP "";       
    
$FILENAME "testpic.jpg";
    
$TRANS_A=40$TRANS_B=30$TRANS_C=20$TRANS_D=10;
    
$OFFSET=2;
    
///////////////////////////////////////
    
   // Original Bild laden und einstellen
    
list($width,$height)=getimagesize($DEST_TMP.$FILENAME);
    
$IM imagecreatefromjpeg($DEST_TMP.$FILENAME); 
    
imagealphablending($IMTRUE);    
    
## Watermarked Step I
    
   // Wasserbild A
    
$WATER_A imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_ATRUE);    
    
imagecolortransparent($WATER_Aimagecolorat($WATER_A00));
    
imagecopymerge($IM$WATER_A$OFFSET000$width$height$TRANS_A);
    
   
// Wasserbild B
    
$WATER_B imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_BTRUE);    
    
imagecolortransparent($WATER_Bimagecolorat($WATER_B00));
    
imagecopymerge($IM$WATER_B0$OFFSET00$width$height$TRANS_B);    
    
   
// Wasserbild C
    
$WATER_C imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_CTRUE);    
    
imagecolortransparent($WATER_Cimagecolorat($WATER_C00));
    
imagecopymerge($IM$WATER_C00$OFFSET0$width$height$TRANS_C);    
    
   
// Wasserbild D
    
$WATER_D imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_DTRUE);    
    
imagecolortransparent($WATER_Dimagecolorat($WATER_D00));
    
imagecopymerge($IM$WATER_D000$OFFSET$width$height$TRANS_D);    
    
    
ImageJPEG($IM,"TMP_WATERMARK.jpg",100);
    
## Watermarked Step II
    
    
$FILENAME="TMP_WATERMARK.jpg";
    
   
// Wasserbild A
    
$WATER_A imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_ATRUE);    
    
imagecolortransparent($WATER_Aimagecolorat($WATER_A00));
    
imagecopymerge($IM$WATER_A$OFFSET000$width$height$TRANS_A);
    
   
// Wasserbild B
    
$WATER_B imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_BTRUE);    
    
imagecolortransparent($WATER_Bimagecolorat($WATER_B00));
    
imagecopymerge($IM$WATER_B0$OFFSET00$width$height$TRANS_B);    
    
   
// Wasserbild C
    
$WATER_C imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_CTRUE);    
    
imagecolortransparent($WATER_Cimagecolorat($WATER_C00));
    
imagecopymerge($IM$WATER_C00$OFFSET0$width$height$TRANS_C);    
    
   
// Wasserbild D
    
$WATER_D imagecreatefromjpeg($DEST_TMP.$FILENAME);
    
imagealphablending($WATER_DTRUE);    
    
imagecolortransparent($WATER_Dimagecolorat($WATER_D00));
    
imagecopymerge($IM$WATER_D000$OFFSET$width$height$TRANS_D);    
    
    
ImageJPEG($IM,"TMP_WATERMARK.jpg",100);
    
## Watermarked Step III
    
    
$FILENAME2="TMP_WATERMARK.jpg";
    
   
// Wasserbild A
    
$WATER_A imagecreatefromjpeg($DEST_TMP.$FILENAME2);
    
imagealphablending($WATER_ATRUE);    
    
imagecolortransparent($WATER_Aimagecolorat($WATER_A00));
    
imagecopymerge($IM$WATER_A$OFFSET000$width$height$TRANS_A);
    
   
// Wasserbild B
    
$WATER_B imagecreatefromjpeg($DEST_TMP.$FILENAME2);
    
imagealphablending($WATER_BTRUE);    
    
imagecolortransparent($WATER_Bimagecolorat($WATER_B00));
    
imagecopymerge($IM$WATER_B0$OFFSET00$width$height$TRANS_B);    
    
   
// Wasserbild C
    
$WATER_C imagecreatefromjpeg($DEST_TMP.$FILENAME2);
    
imagealphablending($WATER_CTRUE);    
    
imagecolortransparent($WATER_Cimagecolorat($WATER_C00));
    
imagecopymerge($IM$WATER_C00$OFFSET0$width$height$TRANS_C);    
    
   
// Wasserbild D
    
$WATER_D imagecreatefromjpeg($DEST_TMP.$FILENAME2);
    
imagealphablending($WATER_DTRUE);    
    
imagecolortransparent($WATER_Dimagecolorat($WATER_D00));
    
imagecopymerge($IM$WATER_D000$OFFSET$width$height$TRANS_D);    
    
    
ImageJPEG($IM,false,100);
    
unlink($DEST_TMP.$FILENAME2);

///////////////////////////////////////

?>
Der Effekt wird mehrmals auf das jeweils davor erzeugte Bild ausgeführt um den Effekt abzurunden und nicht so kantig wirken zu lassen.
Broadcast ist offline   Mit Zitat antworten
Alt 01.02.2008, 12:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.255
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Call-in-show online??
nikosch ist gerade online   Mit Zitat antworten
Alt 01.02.2008, 13:17  
Erfahrener Benutzer
 
Registriert seit: 16.12.2003
Beiträge: 125
Broadcast
Standard

Ich hab diesen Blur Effekt mal als Funktion gebaut, falls es jemand benötigen sollte:

PHP-Code:
<?
CreateBlurImage
("testpic.jpg","meinblur.jpg",10);


 function 
CreateBlurImage($FILENAME,$DEST_FILE,$QUALITY=3,$OFFSET=2,$TRANSARRAY=false){    
   
// Einstellen der Transparenzschritte
    
if($TRANSARRAY[0]){$TRANS[0]=$TRANSARRAY[0];}else{$TRANS[0]=50;}#end of if
    
if($TRANSARRAY[1]){$TRANS[1]=$TRANSARRAY[1];}else{$TRANS[1]=40;}#end of if
    
if($TRANSARRAY[2]){$TRANS[2]=$TRANSARRAY[2];}else{$TRANS[2]=30;}#end of if
    
if($TRANSARRAY[3]){$TRANS[3]=$TRANSARRAY[3];}else{$TRANS[3]=20;}#end of if        
   // Auslesen des Original Bildes 
    
list($width,$height)=getimagesize($DEST_TMP.$FILENAME);
    
$IM imagecreatefromjpeg($DEST_TMP.$FILENAME); 
    
imagealphablending($IMTRUE);        
   
// Verschieben der Bilder und somit erzeugen des Blureffektes    
    
for($i=1;$i<=$QUALITY;$i++){
     
// Move A
      
$WATER_A imagecreatefromjpeg($FILENAME);
      
imagealphablending($WATER_ATRUE);    
      
imagecolortransparent($WATER_Aimagecolorat($WATER_A00));
      
imagecopymerge($IM$WATER_A$OFFSET000$width$height$TRANS[0]);    
     
// Move B
      
$WATER_B imagecreatefromjpeg($FILENAME);
      
imagealphablending($WATER_BTRUE);    
      
imagecolortransparent($WATER_Bimagecolorat($WATER_B00));
      
imagecopymerge($IM$WATER_B0$OFFSET00$width$height$TRANS[1]);        
     
// Move C
      
$WATER_C imagecreatefromjpeg($FILENAME);
      
imagealphablending($WATER_CTRUE);    
      
imagecolortransparent($WATER_Cimagecolorat($WATER_C00));
      
imagecopymerge($IM$WATER_C00$OFFSET0$width$height$TRANS[2]);        
     
// Move D
      
$WATER_D imagecreatefromjpeg($FILENAME);
      
imagealphablending($WATER_DTRUE);    
      
imagecolortransparent($WATER_Dimagecolorat($WATER_D00));
      
imagecopymerge($IM$WATER_D000$OFFSET$width$height$TRANS[3]);    
     
// Bild temporär speichern für nächsten Durchgang 
      
ImageJPEG($IM,"TMP_WATERMARK_".$i.".jpg",100);
      
$FILENAME="TMP_WATERMARK_".$i.".jpg";
    }
#end of for   
   // Löschen der Tempdaten
    
for($i=1;$i<=$QUALITY;$i++){unlink("TMP_WATERMARK_".$i.".jpg");}#end of if
   // Wegschneiden der verpixelten Ränder und speichern des Bildes
    
$CUT_OFF=7;
    
$NEW_IMG imagecreatetruecolor($width,$height);
    
ImageCopyResampled($NEW_IMG$IM0000$width+$CUT_OFF$height+$CUT_OFF$width$height);
    
ImageJPEG($NEW_IMG,$DEST_FILE,100);    
 }
#end of function
    
?>
Broadcast ist offline   Mit Zitat antworten
Alt 01.02.2008, 15:00  
CIX88
Gast
 
Beiträge: n/a
Standard

Ab PHP5 gibt es Filter (imagefilter) die wesentlich schneller und das Script wesentlich kleiner machen. Oder imageconvolution() - sehr nettes Spielzeug.
  Mit Zitat antworten
Alt 01.02.2008, 16:23  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Dann bau doch nen ne Funktion die Fehler in ein Bild baut und dann "Finden Sie einen Fehler und wählen Sie sich unter 0900-123456 ein" LOL
cycap ist offline   Mit Zitat antworten
Alt 01.02.2008, 16:35  
CIX88
Gast
 
Beiträge: n/a
Standard

??????????? was wie wo ?
  Mit Zitat antworten
Alt 01.02.2008, 16:40  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von CIX88
??????????? was wie wo ?
gaaanz ruhig dich meinte ich gar nicht, war an Broadcast gerichtet und bezogen auf das Posting von nikosch77
cycap ist offline   Mit Zitat antworten
Alt 01.02.2008, 17:01  
CIX88
Gast
 
Beiträge: n/a
Standard

Achsooooo, mich würde mal interessieren, wie hoch der Speicherbedarf bei der Funktion CreateBlurImage() ist, wenn ein Bild 2000x2000 dort 3...4 mal durch ne Schleife läuft. Im PHP-Handbuch gibt es noch andere Beispiele, die vielleicht etwas bessere Performance haben als hier im Beispiel-Script.

@Broadcast
Keine Serverprobleme ?
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild onMouseOver einblenden rocco HTML, Usability und Barrierefreiheit 8 22.02.2008 12:52
[GDLib] Bild über Text legen Johnnii360 PHP-Fortgeschrittene 8 07.02.2008 15:46
[Erledigt] Nächstes Bild, Vorheriges Bild in PHP mit MySQL Datenbanken 2 15.05.2006 20:50
[Erledigt] Bild aus Datei in Bild einfügen PHP Tipps 2005-2 1 07.08.2005 23:36
[PHP«Image] Bild in ein anderes Bild einsetzen PHP Tipps 2005-2 4 07.08.2005 19:39
Bild aus Server anzeigen lassen flual2000 PHP Tipps 2004 4 26.10.2004 16:33
Bild größe hat prob mit umbenennung. JEGO PHP Tipps 2004 1 08.07.2004 16:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bild über bild legen, php bild über bild legen, bild auf bild legen, transparentes bild über bild, transparentes bild über bild legen, php imagealphablending, foto über foto legen, bild über bild legen php, html transparentes bild über bild, gdlib blur, transparentes bild, bild über anderes bild legen php, php bild auf bild legen, imagecopymerge php beispiel bilder, png über jpg legen, php png über jpg legen, imagealphablending, imagecopymerge imagealphablending, bild über anderes legen, php transparentes bild einfügen

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.