Bild übergabe

danza

Erfahrenes Mitglied
Hi,

Ich habe folgendes Problem, habe mir in PHP ein Script gebaut, welches Bilder erstellt.

create_img.php?action=view
Dort kann der User einen Text ein geben und eine Bilddatei vom Rechner per HTML
Input type="file" und sende diese dann an action=view_image

create_img.php?action=create
Dort wird das Bild bearbeitet, also Bild auf ein anderes gelegt und der Text eingefügt klappt ohne Probleme

create_img.php?action=view_image
Dort soll dann das bearbeitet Bild von dem Formular angezeigt werden, mir wurde gesagt ich sollte das so aufrufen:
HTML:
<img src=\"create_img.php?action=create&txt=$text\">


Jetzt ist aber das Problem wie über Trage ich das Bild an action=create per $_GET ist das ja nicht möglich da so ein Bild dafür viel zu groß ist, und der POST wird ja nur an action=view_image gesendet, ich hoffe ihr könnt mir helfen :rolleyes:
 
Wird das Bild nicht schon vorher auf dem Server gespeichert?
Speichere den Namen als GET oder POST, und zeige dann das Bild einfach an :)
 
Ne das Bild soll aus der Hochgeladenen Bild vom User mit einem anderem Bild was auf dem Server liegt zusammen gefügt werden, nach dem der User das Formular abschickt soll es auf der Seite action=view_image angezeigt werden, das Bild muss aber erst bei dem Seiten aufruf erstellt werden, dazu rufe ich mit dem HTML Tag <img src=\"create_img.php?action=create&txt=$text\"> das Bild auf was eben genau in diesem Moment dann erstellt wird.

ich habe ja nur sowas:
PHP:
$_FILES['lokale_datei']['tmp_name']
$_FILES['lokale_datei']['name']
 
Aber in dem Moment ist es doch schon auf dem Server.

Wenn ich das richtig verstehe willst du aus einer Datei "x" mit einer Datei auf dem Server ein Bild aus 2 Bildern machen, ja?

Ich würde es per GET oder POST anhängen, denn das Bild selber wird damit ja nicht transportiert ;)
 
Also der User hat ein Formular bei view klickt dann beim Formular auf absenden und gelangt auf view_image, dort habe ich dann
PHP:
 $text = $_POST['text'];
und dann kommt der Bildlink der den create Teil aufruft:
PHP:
echo "<img src=\"create_img.php?action=create&txt=$text&img=$image\">";
 
Poste mal am besten den ganzen Quelltext und nicht nur die kleinen Ausschnitte,
dann ist es denke ich mal besser zu verstehen :)
 
PHP:
<?php
	$filename = 'create_img.php';
	require("global.php");
	
	if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
	else $action = 'view';	
	
	if ($action == 'create') {
		#1. Bild Bearbeiten
		$image1 = imagecreatefrompng("images/vorlage.png"); # das Vorlagen-Bild 
		$font = "images/MyriadPro-Bold.otf"; #Schriftart
		$textcolor = imagecolorallocate($image1,255,255,255);    
		$text = $_GET['txt']; # der Text | 33Zeichen Max!
		if(strlen($text)>33){
			echo "Zu viele Zeichen";
			exit;
		}
		imagettftext($image1, 15, 0, 20, 22, $textcolor, $font, $text);  # Schriftgröße, Position, usw..
		#2. Bild Bearbeiten
	    $file        = $_GET['img']; #Hier würde ich das Userbild benötigen
	    $src_img     = imagecreatefromjpeg($file);
	    $picsize     = getimagesize($file);
	    $src_width   = $picsize[0];
	    $src_height  = $picsize[1];	
	    $width = "421";
	    $height = "242";                  
	    $dst_img = imagecreatetruecolor($width,$height);
	    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
		#Beide Bilder zusammenfügen	
		ImageCopy($image1,$dst_img,0,32,0,0,420,238);
		$image = header("Content-type: image/jpeg").imagejpeg($image1,'',90);
	}

	if ($action == 'view') {
		eval("\$tpl->output(\"".$tpl->get("create_img")."\");");
	}	

	if ($action == 'view_image') {
		$text = $_POST['text'];
		$image = $_POST['link'];
		print_r($_FILES);
		$image = "<img src=\"create_img.php?action=create&txt=$text&img=$image\">";
		echo $image;
	}
?>
Das Template create_img:
HTML:
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="de" lang="de" xmlns="http://www.w3.org/1999/xhtml">
<head>
 $headinclude
</head>

<body $bodyinclude>

 $header

 $error

       <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%" align="center">
        <tr>
         <td class="main_container_row1" colspan="2">
          Bild erstellen
         </td>
        </tr>
        <tr>
         <td class="main_container_row6">
           <form action="create_img.php?action=view_image" class="button" enctype="multipart/form-data" method="POST">
			<table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%" align="center">
			 <tr>
			  <td class="main_container_row6" colspan="2">			
				<p>TEXT</p>
			  </td>
			 </tr>
			 <tr>
			  <td class="main_container_row11" width="240px">
			  	<b>Text auf dem Bild</b>
				<b>Bild auswählen</b>
			  </td>
			  <td>
				<input name="text" type="text" size="50" maxlength="1024" class="text"><br><br>
			  	<input name="lokale_datei" type="file" size="50" maxlength="1024" class="text"><br><br>
			  </td>
			 </tr>
			 <tr>
			  <td class="main_container_row11">
			  	&nbsp;
			  </td>
			  <td>
			  	<div align="right"><input type="submit"class="button" name="Abschicken" value="Abschicken"></div>
			  </td>
			 </tr>
			</table>


		</form>
         </td>
        </tr>
        <tr>
         <td class="main_container_row4" colspan="2">
          &nbsp;
         </td>
        </tr>
       </table>

 $footer

</body>

</html>
 
Naja das mit dem create hatte ich schon als Funktion, da war das Problem, das ja ein Bildheader mit gesendert werden muss:
PHP:
header("Content-type: image/jpeg")
Und dieser Header kann man nur alse aller erstes versendet werden, oder gibt es da Möglichkeiten zuumgehen? Weil wenn ich das per funktion mache müsst ich das ja so machen oder?
PHP:
$image = "<img src=\"".create()."\">";
echo $image;
 
Zurück