4images Forum & Community

General / Allgemeines => Programming => Topic started by: Sunny C. on December 15, 2011, 05:04:53 PM

Title: Mit Php Text auf einem Bild schreiben
Post by: Sunny C. on December 15, 2011, 05:04:53 PM
Hallo zusammen,

ich habe eine kleines Problem.
Ich habe mir eine Routine geschrieben, mit der ich auf Bilder ein Text mittels Php schreiben kann.

Funktioniert (Einen text):
<?php
define('ROOT_PATH', '../');
include(ROOT_PATH.'inc/define.php');

$date = date('H-i-s');
$rand = rand(0, 99);
$SourceFile = IMAGE_PATH.'blank/10.jpeg';
$DestinationFile = IMAGE_PATH.'finish/'.$date.'_'.$rand.'.jpeg';
$WaterMarkText = $_GET['texto'];
watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile);

function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) {
   list($width, $height) = getimagesize($SourceFile);
   $image_p = imagecreatetruecolor($width, $height);
   $image = imagecreatefromjpeg($SourceFile);
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
   $black = imagecolorallocate($image_p, 76, 73, 105);
   $font = FONT_PATH.'3.ttf';
   $font_size = 20;
   imagettftext($image_p, $font_size, 12, 108, 217, $black, $font, $WaterMarkText);
   if ($DestinationFile<>'') {
   imagejpeg ($image_p, $DestinationFile, 100);
   } else {
   header('Content-Type: image/jpeg');
   imagejpeg($image_p, null, 100);
   };
   imagedestroy($image);
   imagedestroy($image_p);
};
?>
Aber wenn ich zwei Texte schreiben will geht das nicht, hier der Code:
Es wird nun gar kein Text mehr ausgegeben...
<?php
define('ROOT_PATH', '../../');
include(ROOT_PATH.'inc/define.php');

$date = date('H-i-s');
$rand = rand(0, 99);
$SourceFile = IMAGE_PATH_PARFUM.'blank/parfum/1.jpg';
$DestinationFile = IMAGE_PATH_PARFUM.'finish/parfum/'.$date.'_'.$rand.'.jpg';
$WaterMarkText = $_GET['texto'];
$WaterMarkTextx = $_GET['textox'];
watermarkImage ($SourceFile, $WaterMarkText, $WaterMarkTextx, $DestinationFile);

function watermarkImage ($SourceFile, $WaterMarkText, $WaterMarkTextx, $DestinationFile) {
   list($width, $height) = getimagesize($SourceFile);
   $image_p = imagecreatetruecolor($width, $height);
   $image = imagecreatefromjpeg($SourceFile);
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
   $black = imagecolorallocate($image_p, 58, 58, 58);
   $font = FONT_PATH_PARFUM.'4.ttf';
   $font_size = 30;
   imagettftext($image_p, $font_size, -10, 200, 420, $black, $font, $WaterMarkText);
   if ($DestinationFile<>'') {
   imagejpeg ($image_p, $DestinationFile, 100);
   } else {
   header('Content-Type: image/jpeg');
   imagejpeg($image_p, null, 100);
   };
   imagedestroy($image);
   imagedestroy($image_p);
};
?>
Was mache ich da falsch?

Die Weiterleitung sieht so aus:
?texto=Testing&textox=Text+2

Das sollte ja richtig sein.
Aber es kommt einfach kein text auf dem Bild

Hier erfolgt die Texteingabe:
(http://s14.directupload.net/images/111215/xmqgfc3g.png)

Das Input sieht so aus:
Code: [Select]
                    <form method='GET' action='convert/parfum/1.php'>
                    <label><input type="text" name="texto"></label><label><input type="text" name="textox"></label> <input type="submit" value="Submit"></form>[/php]
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Rembrandt on December 15, 2011, 06:45:04 PM
hast du schon überprüft ob die beiden Inputs über geben werden?

$WaterMarkText = $_GET['texto'];
$WaterMarkTextx = $_GET['textox'];

nein? dann setze das nach den beiden Variablen:
print_r($_GET);
dann siehst du ob und was an PHP übergeben wird.

die form mach mal so:
Code: [Select]
                    <form method='GET' action='convert/parfum/1.php'>
                      <label for="texto">Erstes Textfeld:<label>
                      <input type="text" id="texto" name="texto">
                      <label for="textox">Zweites Textfeld:<label>
                      <input type="text" id="textox" name="textox">
                      <input type="submit" value="Submit">
                    </form>

mfg Andi
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Sunny C. on December 15, 2011, 08:25:28 PM
Kann ich dir mal die FTP Daten zukommen lassen?
Es ist nicht Datenbank gebunden, sondern On-The-Fly.
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Rembrandt on December 15, 2011, 08:42:53 PM
ja
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Sunny C. on December 15, 2011, 08:46:36 PM
Hat sich doch schon erldigt.
Ich habe die falschen Maße benutzt... sorry für die Frage dann hier.
Aber ich habe das einfach nicht gesehen bzw. übersehen.
Irgendwann sieht man einfach nichts mehr.
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Rembrandt on December 15, 2011, 08:52:35 PM
ich sitze auch oft ewig vor einen hausgemachten problem, da ist es dann besser wenn man aufhört und am nächsten tag weitermacht, da dauert es dann meist nur minuten :)

mfg Andi
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Sunny C. on December 15, 2011, 11:04:55 PM
ja, das werde ich zukünftig auch machen.
Trotzdem Danke dir!!


---

Kann mir denn jemand verraten wie ich ein PNG Transparent bekomme?
Aktueller Code:
<?php

error_reporting(E_ALL);

define('ROOT_PATH', '../../');
include(ROOT_PATH.'inc/define.php');

$date = date('H-i-s');
$rand = rand(0, 99);
$SourceFile = IMAGE_PATH_PARFUM.'blank/parfum/1.png';
$DestinationFile = IMAGE_PATH_PARFUM.'finish/parfum/'.$date.'_'.$rand.'.png';
$WaterMarkText = $_GET['texto'];
$WaterMarkTextx = $_GET['textox'];
watermarkImage ($SourceFile, $WaterMarkText, $WaterMarkTextx, $DestinationFile);

function watermarkImage ($SourceFile, $WaterMarkText, $WaterMarkTextx, $DestinationFile) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefrompng($SourceFile);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
$font = FONT_PATH_PARFUM.'jilsander.ttf';
$font_size_text = 13;
$font_size_textx = 40;
$color_text = imagecolorallocate($image_p, 23, 27, 54);
$color_textx = imagecolorallocate($image_p, 237, 136, 28);
$transparents = imagecolorallocate($image, 0x00, 0xFF, 0x00);
imagettftext($image_p, $font_size_text, 90, 120, 250, $color_text, $font, $WaterMarkText); # Maße anpassen
imagettftext($image_p, $font_size_textx, 90, 169, 250, $color_textx, $font, $WaterMarkTextx); # Maße anpassen
imagecolortransparent($image, $transparents);
if ($DestinationFile<>'') {
imagepng ($image_p, $DestinationFile, 9);
} else {
header('Content-Type: image/png');
imagepng($image_p, null, 9);
};
imagedestroy($image);
imagedestroy($image_p);
};
?>
Das ist aber im Hintergrund immer noch schwarz
Ich habe mich versucht hier dran zu orientieren: http://www.webmaster-eye.de/Transparentes-PNG-mit-PHP.258.artikel.html
Aber ich verstehe nicht wo das "black" hinkommen soll in meinem Code, da ich dieses String ja nicht verwende

Edit:
Erledigt
Title: Re: Mit Php Text auf einem Bild schreiben
Post by: Dafina on September 23, 2012, 10:53:10 AM
Kann ich dir mal die FTP Daten zukommen lassen?
Es ist nicht Datenbank gebunden, sondern On-The-Fly.