Bild spiegeln

Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Bild spiegeln

Beitrag von Conny Kramer » 1. Dez 2010, 21:35

Ich brauche eine Funktion mit der ich Bilder vertikal spiegeln kann. Die Funktion muss in php geschrieben sein und funktionieren. Das Bildformat ist PNG.
Wär schön wenn jemand so eine Funktion hier posten würde.

Danke
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Bild spiegeln

Beitrag von Blue.Shark » 1. Dez 2010, 21:38

Einfach mal googlen?
SpoilerShow
<?php
/**
* imagereflection
*
* Versieht ein Bild mit einem Spiegeleffekt.
*
* @author Jan Papenbrock, www.solvium.de
* @version 0.1 (Apr-13 2007)
*
* @param $source Quellbild
* @param $background Array, das die RGB-Werte der Hintergrundfarbe enthält,
* wobei R = [0], G = [1], B = [2]
* @param $gradient Enthält die Größe des Verlaufs, anteilig zur Bildgröße
* @param $shadow Enthält die Größe des Schattens, anteilig zur Bildgröße
*
* @return das fertige Bild
*/

function imagereflection ( $simg, $background = array (255, 255, 255), $gradient = 0.55, $shadow = 0.1 ) {
$simgx = imagesx($simg);
$simgy = imagesy($simg);
// Höhen von Verlauf und Schatten in px bestimmen
$gradientH = round($simgy * $gradient);
$shadowH = round($simgy * $shadow);
// Zielbild erzeugen
$dimg = imagecreatetruecolor($simgx, $simgy + $gradientH );
// und mit Hintergrundfarbe füllen
imagefill($dimg, 0, 0, imagecolorallocate($dimg, $background[0], $background[1], $background[2]));
// Quellbild kopieren
imagecopy($dimg, $simg, 0, 0, 0, 0, $simgx, $simgy);
// und das gespiegelte Bild einfügen
$simg = imageflip($simg, 1);
imagecopy($dimg, $simg, 0, $simgy, 0, 0, $simgx, $simgy);

// Verlauf erzeugen
$alphaF = 60 / ($gradientH - 1);
for ($i = 0; $i < $gradientH; $i++) {
$col = imagecolorallocatealpha($dimg, $background[0], $background[1], $background[2], 60 - $i * $alphaF);
imageline($dimg, 0, $simgy + $i, $simgx, $simgy + $i, $col);
}

// Schatten erzeugen
$alphaF = 60 / ($shadowH - 1);
for ($i = 0; $i < $shadowH; $i++) {
$col = imagecolorallocatealpha($dimg, 160, 160, 160, $i*$alphaF + 67);
imageline($dimg, 0, $simgy + $i, $simgx, $simgy + $i, $col);
}

// Bild zurückgeben
return $dimg;
}
?>
Keine Ahnung ob das richtig ist, ich kenn mich mit php nicht aus :D
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Latzhosenträger
großer Laubbär
Beiträge: 3309
Registriert: 2. Apr 2008, 15:14

Re: Bild spiegeln

Beitrag von Latzhosenträger » 1. Dez 2010, 21:39

Der folgende Code Snippet durchläuft zwei FOR-Schleifen, die erste ist für die X-Achse und die zweite für die Y-Achse. Innerhalb der Schleifen werden die Pixel der letzten Pixelspalte von $rOrgImage in die erste Pixelspalte des $rReturnImage kopiert, dann die vorletzte Pixelspalte von $rOrgImage in die zweite Pixelspalte von $rReturnImage usw. Nach Beendigung der Schleifendurchläufe befindet sich in $rReturnImage das horizontal gespiegelte Abbild von $rOrgImage. Aufgerufen wird das Script zum Beispiel im IMG-Tag mit dem einzigen Query-Parameter "d", der das betreffende Bild angibt.

Code: Alles auswählen

<?PHP
  $strOrgImage = './path/to/image/' . $_GET['d'];

  list ( $iOrgImageX, $iOrgImageY,
         $iOrgImageType ) = getimagesize ( $strOrgImage );

  $iOrgImageX -= 1;

  switch ( $iOrgImageType )
  {
    case 1:
      $rOrgImage = imagecreatefromgif ( $strOrgImage );
      break;
    case 2:
      $rOrgImage = imagecreatefromjpeg ( $strOrgImage );
      break;
    case 3:
      $rOrgImage = imagecreatefrompng ( $strOrgImage );
  }

  $rReturnImage = imagecreatetruecolor ( $iOrgImageX + 1, $iOrgImageY );

  for ( $iX = 0; $iOrgImageX >= 0; $iOrgImageX-- )
  {
    for ( $iY = 0; $iY <= $iOrgImageY; $iY++ )
    {
      $iColorIndex = imagecolorat ( $rOrgImage, $iOrgImageX, $iY );
      imagesetpixel ( $rReturnImage, $iX, $iY, $iColorIndex );
    }

    $iX++;
  }

  switch ( $iOrgImageType )
  {
    case 1:
      header ( 'content-type: image/gif' );
      imagegif ( $rReturnImage );
      break;
    case 2:
      header ( 'content-type: image/jpeg' );
      imagejpeg ( $rReturnImage );
      break;
    case 3:
      header ( 'content-type: image/png' );
      imagepng ( $rReturnImage );
  }

  imagedestroy ( $rOrgImage );
  imagedestroy ( $rReturnImage );
?> 
Anwengungsbeispiel:

Code: Alles auswählen

<html>
  <head>
    <title>
      BEISPIEL: Bild horizontal gespiegelt
    </title>
  </head>
  <body>
    Bild horizontal gespiegelt:<br />
    <br />
    <img src="reflectImage.php?d=picture.jpg" />
  </body>
</html>
Quelle

Benutzeravatar
Latzhosenträger
großer Laubbär
Beiträge: 3309
Registriert: 2. Apr 2008, 15:14

Re: Bild spiegeln

Beitrag von Latzhosenträger » 1. Dez 2010, 21:40

Blue.Shark hat geschrieben:* Versieht ein Bild mit einem Spiegeleffekt.
Kann ja nur falsch sein. Er will ja keinen Spiegeleffekt.

Benutzeravatar
Blue.Shark
großer Laubbär
Beiträge: 2864
Registriert: 5. Okt 2008, 21:27

Re: Bild spiegeln

Beitrag von Blue.Shark » 1. Dez 2010, 21:43

Ok dann ignoriert meine Nachricht^^
Macht alle bei meinem Spiel mit -> Wörter raten
Meine aktuelle User-Idee: Errungenschaften auf Zeit
Meine Wunsch-Idee: Das Haus der Statistiken, Liebligskarte: Etume - das Flusstal. Andere Userideen: Zauber der globalen Wunder

Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Re: Bild spiegeln

Beitrag von Conny Kramer » 1. Dez 2010, 21:45

Latzhosenträger das geht bei mir iwie nich^^
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benutzeravatar
Latzhosenträger
großer Laubbär
Beiträge: 3309
Registriert: 2. Apr 2008, 15:14

Re: Bild spiegeln

Beitrag von Latzhosenträger » 1. Dez 2010, 21:47

Conny Kramer hat geschrieben:Latzhosenträger das geht bei mir iwie nich^^
Dann google selbst..

Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Re: Bild spiegeln

Beitrag von Conny Kramer » 1. Dez 2010, 21:49

hab ich, hab aber nix gefunden was funktioniert, deswegen frag ich ja du 5 watt birne

ich möchte das also so haben:

Code: Alles auswählen

function spiegel($img){
....code....
return $img;
}
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benu
Zauberer der Bergwiesen
Beiträge: 658
Registriert: 26. Okt 2008, 13:21

Re: Bild spiegeln

Beitrag von Benu » 2. Dez 2010, 11:16

SpoilerShow

Code: Alles auswählen

define("FLIP_X", 1);    // spiegeln an X-Achse
define("FLIP_Y", 2);    // spiegeln an Y-Achse
define("FLIP_BOTH", 4); // Punktspiegelung im Mittelpunkt

/**
 * image_flip
 *
 * spiegelt ein Bild in eienr bestimmten Richtung
 *
 * @ToDo:
 * - kopieren der Pixel funktioniert nicht korrekt bei weißen (eventuell auch schwarzen) Pixeln
 *
 * @param $source Ressource Zeiger auf das Bild, was gespiegelt werden soll
 * @param $flip   int       Richtung in die gespiegelt wird (FLIP_X, FLIP_Y, FLIP_BOTH)
 * @return Ressource
 */
function image_flip($source, $flip) {
	$x_max = imagesx($source);
	$y_max = imagesy($source);
	$im = imagecreatetruecolor($x_max, $y_max);
	
	for ($y_i = 0; $y_i <= $y_max; ++$y_i) {
		for ($x_i = 0; $x_i <= $x_max; ++$x_i) {
			$color = imagecolorat($source, $x_i, $y_i);
			$coords = flip_coords($x_i, $y_i, $x_max, $y_max, $flip);

			imagesetpixel($im, $coords[0], $coords[1], $color);
		}
	}
	
	return $im;
}

/**
 * flip_coords
 *
 * spiegelt Koordinaten in bestimmte Richtung
 * 
 * @param $x     int reele x-Koordinate
 * @param $y     int reele y-Koordinate
 * @param $x_max int Breite des Koordinatensystems
 * @param $y_max int Breite des Koordinatensystems
 * @return array
 */
function flip_coords($x, $y, $x_max, $y_max, $direction) {
	$coords = array($x, $y);
	
	if ($direction == FLIP_X || $direction == FLIP_BOTH) {
		$coords[0] = $x_max-$x;
	}
	if ($direction == FLIP_Y || $direction == FLIP_BOTH) {
		$coords[1] = $y_max-$y;
	}
	return $coords;
}
Habs kurz mit 2 Bildern getestet und funktionierte da auch.
http://fwrails.net
lokale Styes in Google Chrome
lokale Styles in Gologle folgen...
I'm beginning to feel like a Spam God

Benutzeravatar
Schmiddi
Feuervogel
Beiträge: 4467
Registriert: 26. Jul 2005, 17:09

Re: Bild spiegeln

Beitrag von Schmiddi » 2. Dez 2010, 15:34

Conny Kramer hat geschrieben:hab ich, hab aber nix gefunden was funktioniert, deswegen frag ich ja du 5 watt birne

ich möchte das also so haben:
Erst frech werden, dann noch fordern

Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Re: Bild spiegeln

Beitrag von Conny Kramer » 2. Dez 2010, 17:08

selbst schuld bei so einer dämlichen antwort
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Re: Bild spiegeln

Beitrag von Conny Kramer » 2. Dez 2010, 17:20

Benu hat geschrieben:
SpoilerShow

Code: Alles auswählen

define("FLIP_X", 1);    // spiegeln an X-Achse
define("FLIP_Y", 2);    // spiegeln an Y-Achse
define("FLIP_BOTH", 4); // Punktspiegelung im Mittelpunkt

/**
 * image_flip
 *
 * spiegelt ein Bild in eienr bestimmten Richtung
 *
 * @ToDo:
 * - kopieren der Pixel funktioniert nicht korrekt bei weißen (eventuell auch schwarzen) Pixeln
 *
 * @param $source Ressource Zeiger auf das Bild, was gespiegelt werden soll
 * @param $flip   int       Richtung in die gespiegelt wird (FLIP_X, FLIP_Y, FLIP_BOTH)
 * @return Ressource
 */
function image_flip($source, $flip) {
	$x_max = imagesx($source);
	$y_max = imagesy($source);
	$im = imagecreatetruecolor($x_max, $y_max);
	
	for ($y_i = 0; $y_i <= $y_max; ++$y_i) {
		for ($x_i = 0; $x_i <= $x_max; ++$x_i) {
			$color = imagecolorat($source, $x_i, $y_i);
			$coords = flip_coords($x_i, $y_i, $x_max, $y_max, $flip);

			imagesetpixel($im, $coords[0], $coords[1], $color);
		}
	}
	
	return $im;
}

/**
 * flip_coords
 *
 * spiegelt Koordinaten in bestimmte Richtung
 * 
 * @param $x     int reele x-Koordinate
 * @param $y     int reele y-Koordinate
 * @param $x_max int Breite des Koordinatensystems
 * @param $y_max int Breite des Koordinatensystems
 * @return array
 */
function flip_coords($x, $y, $x_max, $y_max, $direction) {
	$coords = array($x, $y);
	
	if ($direction == FLIP_X || $direction == FLIP_BOTH) {
		$coords[0] = $x_max-$x;
	}
	if ($direction == FLIP_Y || $direction == FLIP_BOTH) {
		$coords[1] = $y_max-$y;
	}
	return $coords;
}
Habs kurz mit 2 Bildern getestet und funktionierte da auch.

das funktioniert nicht richtig bei mir. hab es mit meinem schwarz -weiß bild probiert und da erscheinen immer noch zusätzlich schwarze pixel auf dem gespiegelten bild.
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benutzeravatar
Latzhosenträger
großer Laubbär
Beiträge: 3309
Registriert: 2. Apr 2008, 15:14

Re: Bild spiegeln

Beitrag von Latzhosenträger » 2. Dez 2010, 17:29

Meinst du ernsthaft, dass dir noch jemand weiterhilft..?

Benutzeravatar
Conny Kramer
Zauberer der Bergwiesen
Beiträge: 453
Registriert: 25. Apr 2007, 17:31
Wohnort: da wo das Gras noch schmeckt.. xD
Kontaktdaten:

Re: Bild spiegeln

Beitrag von Conny Kramer » 2. Dez 2010, 17:34

du kannst mir ja anscheined eh nicht helfen also brauchste hier och nicht mehr reinschreiben. und ja ich hoffe dass mir noch jmd weiterhilft.
Gehen 2 Irre durch die Wüste
Sagt der eine zum anderen:''He, ich will auch mal in der Mitte gehen!''

Benutzeravatar
Latzhosenträger
großer Laubbär
Beiträge: 3309
Registriert: 2. Apr 2008, 15:14

Re: Bild spiegeln

Beitrag von Latzhosenträger » 2. Dez 2010, 17:36

Ich mache mir die Mühe dir etwas raus zusuchen und du bedankst dich nicht einmal. Was erwartest du eigentlich? Das dir jemand dein Script schreibt? Geh auf php.net und baus dir selbst, wenn dir google nicht hilft.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste