[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Per PHP erstellte Bilder in Medienpool einspeisen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 19:20

Hallo,

ich habe ein kleinen Effektfilter für Bilder programmiert und möchte die daraus erzeugten Bilddateien per PHP (bzw. Redaxo Syntax wenn vorhanden) automatisch in den Medienpool einspeisen, damit das berechnete Bild dort zur Verfügung steht. Gibt es da irgendeine Möglichkeit?

Vielen Dank für Eure Hilfe !

Gruß,
Michael

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 19:58

Hi,

verpack das ganze als Effekt für den Image Manager und du müsstest zu deinem gewünschten Ergebnis kommen wenn du die Bildytpen für den Mediepool mit dem Effekt ausstattest.

derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 20:09

Hallo RexDude,

danke für Deine Antwort! Ja, hatte auch schon gedacht, dass das der elegantere Weg ist. Leider weiß ich nicht, wie man das macht... Wäre dann so eine Art PlugIn, oder? Gibt es da irgendeine Anleitung?

Gruß,
Michael

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 20:20

Ich glaube es gibt hier keine Anleitung. Aber es sollte ganz einfach sein. Du musst lediglich deinen Effekt in eine Klasse packen (die von ex_effect_abstract abgeleitet ist) und in dem entsprechenden Effects Ordner ablegen, siehe hier: https://github.com/redaxo/redaxo4/tree/ ... es/effects

derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 20:43

Aber wo lege ich z. B. fest, wie das Interface aussieht bzw. in welcher der Dateien leg ich die Eingabefelder für die Einstellungen an? Sorry, aber bin was das angeht absoluter Newbie ... :oops:

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

19. Mai 2014, 21:18

Bitte mal die vorhandenen Effect-Klassen anschauen und halt genauso machen ;)


derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 09:57

Guten Morgen,

mein Klassenscript sieht nun so aus - ich hab das teilweise adaptiert von der Insert-Image-Klasse.

Code: Alles auswählen

<?php

/* 
	Das Originalbild wird mit Kontrast und Helligkeit verstärkt,
	mit der geladenen Maske freigestellt und auf das Originalbild
	aufgerechnet (so der Plan ... ;-))
*/

class rex_effect_mask extends rex_effect_abstract {
	
	/* --- Functions --- */
		
	function imagealphamask( &$picture, $mask ) {

		// Get sizes and set up new picture
		$xSize = imagesx($picture);
		$ySize = imagesy($picture);
		$newPicture = imagecreatetruecolor($xSize, $ySize);
		imagesavealpha($newPicture, true);
		imagefill($newPicture, 0, 0, imagecolorallocatealpha( $newPicture, 0, 0, 0, 127));
		
		// Resize mask if necessary
		if ( $xSize != imagesx($mask) || $ySize != imagesy($mask) ) {
			
			$tempPic = imagecreatetruecolor($xSize, $ySize);
			imagecopyresampled($tempPic, $mask, 0, 0, 0, 0, $xSize, $ySize, imagesx($mask), imagesy($mask));
			imagedestroy($mask);
			$mask = $tempPic;
			
		}
		
		// Perform pixel-based alpha map application
		for ($x = 0; $x < $xSize; $x++) {
			
			for ($y = 0; $y < $ySize; $y++) {
				
				$alpha = imagecolorsforindex($mask, imagecolorat( $mask, $x, $y));
				$alpha = 127 - floor($alpha[ 'red' ] / 2);
				$color = imagecolorsforindex($picture, imagecolorat($picture, $x, $y));
				imagesetpixel($newPicture, $x, $y, imagecolorallocatealpha($newPicture, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha));
	
			}
			
		}
		
		// Copy back to original picture
		imagedestroy($picture);
		$picture = $newPicture;
	
	}
	
	function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) { 
		
		// creating a cut resource 
		$cut = imagecreatetruecolor($src_w, $src_h); 
		
		// copying relevant section from background to the cut resource 
		imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); 
		
		// copying relevant section from watermark to the cut resource 
		imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); 
		
		// insert cut resource to destination image 
		imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
		
	}
	
	function execute () {
		
		global $REX;
		
		// Maske laden
		$mask_file = $REX['MEDIAFOLDER'] .'/'. $this->params['maskimage'];
    		
		if (!file_exists($mask_file) || !is_file($mask_file)) {
			$mask_file = dirname(__FILE__). '/../../media/brand.gif';
		}
		
		// Config
		$mask = new rex_image($mask_file);
		$mask->prepare();
		$gdmask =& $mask->getImage();
		$gdimage =& $this->image->getImage();
		
		$image_width  = $this->image->getWidth();
		$image_height = $this->image->getHeight();
		$mask_width  = $mask->getWidth();
		$mask_height = $mask->getHeight();
		
		// Filter anwenden
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, -110);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, 70);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		// Maske anwenden
		imagealphamask($gdimage, $gdmask);
		
		// Mischen
		imagecopymerge_alpha($gdimage,$gdmask, 0, 0, 0, 0, $image_width, $image_height, 100);
		
		$mask->destroy(); 
			
	}
	
	
	function getParams() {

		global $REX,$I18N;
		
		return array(
		
			array(
			  'label' => $I18N->msg('imanager_effect_mask_image'),
			  'name' => 'maskimage',
			  'type'	=> 'media',
			  'default' => ''
			)
			
		);
		
	}
  
}
Leider bekomme ich bei der Anwendung immer die Fehlermeldung
PHP Fatal error: Call to undefined function imagealphamask() in /Applications/MAMP/htdocs/redaxo4_5/redaxo/include/addons/image_manager/classes/effects/class.rex_effect_mask.inc.php on line 115
(in Zeile 115 wird eine der beiden Funktion aufgerufen: imagealphamask($gdimage, $gdmask);

Die betreffenden Funktionen sind aber in der Klasse enthalten. Muss ich die evtl. irgendwo anders deklarieren? Innerhalb der Klasse hatte ich die Funktionen schon an unterschiedlichen Stellen (z. B. unter der Funktion getParams(), innerhalb der Funktion execute() etc.)

Danke nochmal für die Hilfe!

Gruß,
Michael

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 10:03

Du solltest dich vielleicht ein bisschen mit Objektorentierter Programmierung beschäftigen.

Da du deine imagealphamask() nicht statisch deklariert hast, müsste theoretisch der Aufruf so sein: $this->imagealphamask($gdimage, $gdmask);

Der PHP Interpreter weiss sonst nicht wo es nach deiner Funktion suchen soll. Hausnummer fehlt ;)

derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 13:26

Hallo RexDude,

ich muss schon wieder nerven... :lol:

Mein Klassenscript sieht jetzt so aus:

Code: Alles auswählen

<?php

/* 
	Das Originalbild wird mit Kontrast und Helligkeit verstärkt,
	mit der geladenen Maske freigestellt und auf das Originalbild
	aufgerechnet (so der Plan ... ;-))
*/

class rex_effect_mask extends rex_effect_abstract {
	
	
	function execute () {
		
		global $REX;
		
		
		// Maske laden
		
		$mask_file = $REX['MEDIAFOLDER'] .'/'. $this->params['maskimage'];
    		
		if (!file_exists($mask_file) || !is_file($mask_file)) {
			$mask_file = dirname(__FILE__). '/../../media/brand.gif';
		}
		
		
		// Config
		
		$mask = new rex_image($mask_file);
		$mask->prepare();
		$gdmask =& $mask->getImage();
		$gdimage =& $this->image->getImage();
		$original =& $this->image->getImage();
		
		$image_width  = $this->image->getWidth();
		$image_height = $this->image->getHeight();
		$mask_width  = $mask->getWidth();
		$mask_height = $mask->getHeight();
		
		
		// Filter anwenden
		
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, -110);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, 70);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		
		// Maske anwenden
		
		$masked = $this->imagealphamask($gdimage, $gdmask);		
		$mask->destroy();
		
		
		// Mischen
		$gdimage = $this->imagecopymerge_alpha($original,$masked, 0, 0, 0, 0, $image_width, $image_height, 100);
		
		return $gdimage;
			
	}
	
	
	function getParams() {

		global $REX,$I18N;
		
		return array(
		
			array(
			  'label' => $I18N->msg('imanager_effect_mask_image'),
			  'name' => 'maskimage',
			  'type'	=> 'media',
			  'default' => ''
			)
			
		);
		
	}
	
	function imagealphamask( &$picture, $mask ) {
	
	
		// Get sizes and set up new picture
		
		$xSize = imagesx($picture);
		$ySize = imagesy($picture);
		$newPicture = imagecreatetruecolor($xSize, $ySize);
		imagesavealpha($newPicture, true);
		imagefill($newPicture, 0, 0, imagecolorallocatealpha( $newPicture, 0, 0, 0, 127));
		
		
		// Resize mask if necessary
		
		if ( $xSize != imagesx($mask) || $ySize != imagesy($mask) ) {
			
			$tempPic = imagecreatetruecolor($xSize, $ySize);
			imagecopyresampled($tempPic, $mask, 0, 0, 0, 0, $xSize, $ySize, imagesx($mask), imagesy($mask));
			imagedestroy($mask);
			$mask = $tempPic;
			
		}
		
		// Perform pixel-based alpha map application
		
		for ($x = 0; $x < $xSize; $x++) {
			
			for ($y = 0; $y < $ySize; $y++) {
				
				$alpha = imagecolorsforindex($mask, imagecolorat( $mask, $x, $y));
				$alpha = 127 - floor($alpha[ 'red' ] / 2);
				$color = imagecolorsforindex($picture, imagecolorat($picture, $x, $y));
				imagesetpixel($newPicture, $x, $y, imagecolorallocatealpha($newPicture, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha));
	
			}
			
		}
		
		
		// Copy back to original picture
		
		imagedestroy($picture);
		$picture = $newPicture;
		
		return $picture;
	
	}
	
	
	function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) { 
		
		// creating a cut resource 
		$cut = imagecreatetruecolor($src_w, $src_h); 
		
		// copying relevant section from background to the cut resource 
		imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); 
		
		// copying relevant section from watermark to the cut resource 
		imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); 
		
		// insert cut resource to destination image 
		imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
		
		return $dst_im;
		
	}
  
}
Das BIld kommt aber falsch raus:
falsche_ausgabe.png
Falsche Ausgabe
falsche_ausgabe.png (135.93 KiB) 10075 mal betrachtet
Mit meinem ursprünglichen Script ...

Code: Alles auswählen

<?php

// Load source and mask
$source_file = 'rss_kopfbild_2.png';
$mask_file = 'rss_kopfbild_maske.png';

$source_file_split = explode('.',$source_file);

//if ( !file_exists($source_file_split[0] . '_merged' . $source_file_split[1]) ) {

	$source = imagecreatefrompng($source_file);
	$mask = imagecreatefrompng($mask_file);
	
	$merge = imagecreatefrompng('rss_kopfbild_2.png');
	$img_w = imagesx($merge);
	$img_h = imagesy($merge);
	
	// Filter
	imagefilter($source, IMG_FILTER_BRIGHTNESS, -110);
	imagefilter($source, IMG_FILTER_CONTRAST, -30);
	
	imagefilter($source, IMG_FILTER_BRIGHTNESS, 70);
	imagefilter($source, IMG_FILTER_CONTRAST, -30);
	
	// Apply mask to source
	imagealphamask($source, $mask);
	
	// Output
	imagepng($source,'./rss_kopfbild_masked.png');
	
	// Merge
	$m_src = imagecreatefrompng('./rss_kopfbild_masked.png');
	imagecopymerge_alpha($merge,$m_src, 0, 0, 0, 0, $img_w, $img_h, 100);
	imagejpeg($merge, './rss_kopfbild_merged.jpg',70);
	
	
	function imagealphamask( &$picture, $mask ) {
		
		
		// Get sizes and set up new picture
		
		$xSize = imagesx($picture);
		$ySize = imagesy($picture);
		$newPicture = imagecreatetruecolor($xSize, $ySize);
		imagesavealpha($newPicture, true);
		imagefill($newPicture, 0, 0, imagecolorallocatealpha( $newPicture, 0, 0, 0, 127));
		
		
		// Resize mask if necessary
		
		if ( $xSize != imagesx($mask) || $ySize != imagesy($mask) ) {
			
			$tempPic = imagecreatetruecolor($xSize, $ySize);
			imagecopyresampled($tempPic, $mask, 0, 0, 0, 0, $xSize, $ySize, imagesx($mask), imagesy($mask));
			imagedestroy($mask);
			$mask = $tempPic;
			
		}
		
		// Perform pixel-based alpha map application
		
		for ($x = 0; $x < $xSize; $x++) {
			
			for ($y = 0; $y < $ySize; $y++) {
				
				$alpha = imagecolorsforindex($mask, imagecolorat( $mask, $x, $y));
				$alpha = 127 - floor($alpha[ 'red' ] / 2);
				$color = imagecolorsforindex($picture, imagecolorat($picture, $x, $y));
				imagesetpixel($newPicture, $x, $y, imagecolorallocatealpha($newPicture, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha));
	
			}
			
		}
		
		
		// Copy back to original picture
		
		imagedestroy($picture);
		$picture = $newPicture;
		
	}
	
	function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) { 
		
		// creating a cut resource 
		$cut = imagecreatetruecolor($src_w, $src_h); 
		
		// copying relevant section from background to the cut resource 
		imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); 
		
		// copying relevant section from watermark to the cut resource 
		imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); 
		
		// insert cut resource to destination image 
		imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
		
	} 
	
//}

echo '<img src="./rss_kopfbild_merged.jpg" border="0">';

?>
... wird es angezeigt wie es sein soll:
richtige_ausgabe.jpg
Richtige Ausgabe
richtige_ausgabe.jpg (93.49 KiB) 10075 mal betrachtet
Was habe ich denn da falsch gemacht? Das Script soll bewirken, dass das Originalbild mit folgender PNG-Maske maskiert werden soll und dann wieder auf das Original draufgerechnet werden soll.
rss_kopfbild_maske.png
rss_kopfbild_maske.png (102.71 KiB) 10075 mal betrachtet
Kannst Du mir da nochmal auf die Sprünge helfen? Danke !!! :D

Gruß,
Michael

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 13:35

Ich kenne mich hier leider auch nicht besser aus. Offensichltich fehlt aber das Ursprungsbild (wenn ich das richtig deute). Also würd ich schau wo und wie es übergeben wird. Evtl. bei anderen Effekten schauen wie dort das Ursprungsbild durchgeschleust wird.

Oder das maskieren läuft nicht korrekt...

Vielleicht hat hier jemand anderes aber auch noch konrektere Ideen... :D

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 13:45

Es gibt übrigens einen Filter "insert_image". Der macht aber nicht zufällig genau das was du vor hast wenn man da ein transparentes PNG einstellt?

derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

20. Mai 2014, 17:35

RexDude hat geschrieben:Es gibt übrigens einen Filter "insert_image". Der macht aber nicht zufällig genau das was du vor hast wenn man da ein transparentes PNG einstellt?
Den hatte ich mir tatsächlich als Vorlage genommen. Das Problem ist, dass hier "einfach" nur das unbehandelte Bild auf das Ursprungsbild draufgerechnet wird.

In meinem Fall muss ja das Ursprungsbild erst modifiziert (Effekte draufgerechnet und maskiert) werden und dieses Bild dann nochmal mit dem unbehandelten Ursprungsbild kombiniert werden. Und da komme ich irgendwie nicht weiter... Naja, ich probier mal weiter rum ...

Aber wenn sonst noch jemand nen Tipp hat ... ?

Gruß,
Michael

derkrebs
Beiträge: 149
Registriert: 4. Okt 2011, 17:27

Re: Per PHP erstellte Bilder in Medienpool einspeisen

3. Jun 2014, 18:17

Hej,

ich aktiviere diesen Thread noch mal, da ich trotz vielem Ausprobieren immer noch keine Lösung gefunden habe und ich nun dringend eine brauche für mein o. g. Problem. Kann mir jemand helfen?

Ich glaub ich steh da irgendwie auf'm Schlauch ... :(

(Danke @RexDude für Deine bisherigen Tipps! :) )

Hier ist die aktuelle Version meines PlugIn-Scripts für den ImageManager:

Code: Alles auswählen

<?php

/* 
	Das Originalbild wird mit Kontrast und Helligkeit verstärkt,
	mit der geladenen Maske freigestellt und auf das Originalbild
	aufgerechnet (so der Plan ... ;-))
*/

class rex_effect_mask extends rex_effect_abstract {
	
	
	function execute () {
		
		global $REX;
		
		ob_start();
		
		// Maske laden
		
		$mask_file = $REX['MEDIAFOLDER'] .'/'. $this->params['maskimage'];
    		
		if (!file_exists($mask_file) || !is_file($mask_file)) {
			$mask_file = dirname(__FILE__). '/../../media/brand.gif'; 
			// stammt noch von dem PlugIn "Insert Image", welches ich als Vorlage verwendet habe
		}
		
		
		// Config
		
		$mask = new rex_image($mask_file);
		$mask->prepare();
		$gdmask =& $mask->getImage();
		$original =& $this->image->getImage();
		$gdimage =& $this->image->getImage();
		
		
		$image_width  = $this->image->getWidth();
		$image_height = $this->image->getHeight();
		$mask_width  = $mask->getWidth();
		$mask_height = $mask->getHeight();
		
		
		// Filter anwenden
		
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, -110);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		imagefilter($gdimage, IMG_FILTER_BRIGHTNESS, 70);
		imagefilter($gdimage, IMG_FILTER_CONTRAST, -30);
		
		
		// Maske anwenden
		$this->imagealphamask($gdimage, $gdmask);	
		//$mask->destroy();
		
		
		// Mischen
		imagealphablending($gdimage, true);
		imagesavealpha($gdimage, false);
		
		imagealphablending($original, false);
		imagesavealpha($original, true);
    		
		imagecopy($original, $gdimage, 0, 0, 0, 0, $image_width, $image_height);
		
		
		/*$gdimage = $this->imagecopymerge_alpha($original,$masked, 0, 0, 0, 0, $image_width, $image_height, 100);
		
		return $gdimage;*/
		
		ob_end_flush();
	}
	
	
	function getParams() {

		global $REX,$I18N;
		
		return array(
		
			array(
			  'label' => $I18N->msg('imanager_effect_mask_image'),
			  'name' => 'maskimage',
			  'type'	=> 'media',
			  'default' => ''
			)
			
		);
		
	}
	
	function imagealphamask( &$picture, $mask ) {
	
	
		// Get sizes and set up new picture
		
		$xSize = imagesx($picture);
		$ySize = imagesy($picture);
		$newPicture = imagecreatetruecolor($xSize, $ySize);
		imagesavealpha($newPicture, true);
		imagefill($newPicture, 0, 0, imagecolorallocatealpha( $newPicture, 0, 0, 0, 127));
		
		
		// Resize mask if necessary
		
		if ( $xSize != imagesx($mask) || $ySize != imagesy($mask) ) {
			
			$tempPic = imagecreatetruecolor($xSize, $ySize);
			imagecopyresampled($tempPic, $mask, 0, 0, 0, 0, $xSize, $ySize, imagesx($mask), imagesy($mask));
			imagedestroy($mask);
			$mask = $tempPic;
			
		}
		
		// Perform pixel-based alpha map application
		
		for ($x = 0; $x < $xSize; $x++) {
			
			for ($y = 0; $y < $ySize; $y++) {
				
				$alpha = imagecolorsforindex($mask, imagecolorat( $mask, $x, $y));
				$alpha = 127 - floor($alpha[ 'red' ] / 2);
				$color = imagecolorsforindex($picture, imagecolorat($picture, $x, $y));
				imagesetpixel($newPicture, $x, $y, imagecolorallocatealpha($newPicture, $color[ 'red' ], $color[ 'green' ], $color[ 'blue' ], $alpha));
	
			}
			
		}
		
		
		// Copy back to original picture
		
		imagedestroy($picture);
		$picture = $newPicture;
		
		//return $picture;
	
	}
	
	
	function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct) { 
		
		// creating a cut resource 
		$cut = imagecreatetruecolor($src_w, $src_h); 
		
		// copying relevant section from background to the cut resource 
		imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); 
		
		// copying relevant section from watermark to the cut resource 
		imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); 
		
		// insert cut resource to destination image 
		imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
		
		return $dst_im;
		
	}
  
}
Danke !!!!

Gruß, Michael

Zurück zu „Allgemeines [R4]“