113805
Goto Top

Foto Upload und Default Text einfügen

Hallo zusammen

Ich bin auf der Suche nach einem Tool oder wie man das umsetzen kann.
http://eays.ee/idaho/

Ein User laded sein Bild hoch und es generiert mit seinem Bild einen Text und erstellt es Schwarzweiss auf das hochgeladene Bild.
Der User kann anschliessend das Bild dann herunterladen.

Hat jemand eine Idee?

Gruss

Ps. Ich habe es mal in den Webentwicklungs Bereich gelegt.

Content-Key: 338071

Url: https://administrator.de/contentid/338071

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: 132895
132895 17.05.2017 um 09:20:28 Uhr
Goto Top
Mit etwas PHP und GD ist das schnell erledigt...
http://php.net/manual/de/image.examples-png.php

Gruß
Mitglied: ashnod
ashnod 17.05.2017 um 09:23:12 Uhr
Goto Top
Moin ...

War der Google Übersetzer heute so schlecht?

Du meinst vermutlich so eine geheimnissvolle Technik wie das Bild mit einem Wasserzeichen zu versehen?

Ob Wasserzeichen oder nicht, in der Regel nutz man dafür ein Grafikpaket wie z.B. imagemagick / graphicsmagick.

VG
Ashnod
Mitglied: 113805
113805 17.05.2017 um 09:37:05 Uhr
Goto Top
Moin

Nicht wirklich nein haha face-smile

Es geht schon in Richtung wie password gemeint hat.
Ich müsste eine Uploadfunktion erstellen mit PHP und danach das hochgeladene Bild verwenden um ein Text mit GD hinzuzufügen.
Danach sollte der User die Möglichkeit haben dieses Bild zu downloaden.

Gruss
Mitglied: 132895
132895 17.05.2017 um 09:41:59 Uhr
Goto Top
Ich müsste eine Uploadfunktion erstellen mit PHP und danach das hochgeladene Bild verwenden um ein Text mit GD hinzuzufügen.
Genau, dann tu das.
Mitglied: colinardo
colinardo 17.05.2017 aktualisiert um 11:36:23 Uhr
Goto Top
[ Sowas?]

Grüße Uwe
Mitglied: 113805
113805 17.05.2017 um 11:43:06 Uhr
Goto Top
Zitat von @colinardo:

[ Sowas?]

Grüße Uwe

Genau :D
Kann ich da ein Blick in deine PHP Source reinschauen?

LG


<?php
   if(isset($_FILES['image'])){  
      $errors= array();
      $image_name = $_FILES['image']['name'];  
      $image_size = $_FILES['image']['size'];  
      $image_temp = $_FILES['image']['tmp_name'];  
      $image_type = $_FILES['image']['type'];  
      

    switch(strtolower($image_type)){
            case 'image/png':   
                $image_resource =  imagecreatefrompng($image_temp);
                break;
            case 'image/gif':  
                $image_resource =  imagecreatefromgif($image_temp);
                break;          
            case 'image/jpeg': case 'image/pjpeg':  
                $image_resource = imagecreatefromjpeg($image_temp);
                break;
            default:
                $image_resource = false;
        }

  //bild laden
	 $im = imagecreatefromjpeg('$image_type');  

	//location text
	 $imagesize = getimagesize('$image_type');  
	 $y_offset = $imagesize[1] - 20;
	 $x_offset = 7;

	//allocate text color
	$textcolor = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);

	//text
	imagestring($im, 5, $x_offset, $y_offset, 'text', $textcolor);  

	//output watermarked image
	header('Content-Type: image/jpeg');  
	imagejpeg($image_resource, NULL , 90);
            
	imagedestroy($image_resource);
die();
    }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">  
         <input type = "file" name = "image" />  
         <button type = "submit" name="btn-upload">upload</button>			  
      </form>
      
   </body>
</html>
Mitglied: colinardo
Lösung colinardo 17.05.2017 aktualisiert um 12:01:09 Uhr
Goto Top
Kannst du gerne:
(Achtung, hier wird eine ttf verwendet (Vorraussetzungen: GD und libfreefont6 library))
<?php
function ProcessUploadedFile($upload_id, $arr_extensions){
	try {
		// check if undefined / multiple files etc.
		if (!isset($_FILES[$upload_id]['error']) || is_array($_FILES[$upload_id]['error'])) {  
	        throw new RuntimeException('Invalid files');  
		}
		// check error value
		switch ($_FILES[$upload_id]['error']) {  
			case UPLOAD_ERR_OK:
				break;
			case UPLOAD_ERR_NO_FILE:
				throw new RuntimeException('No file sent.');  
			case UPLOAD_ERR_INI_SIZE:
			case UPLOAD_ERR_FORM_SIZE:
				throw new RuntimeException('Exceeded filesize limit.');  
			default:
				throw new RuntimeException('Unknown errors.');  
		}
		
		// check mime type of file (don't rely on the mime-type of $_FILES!!) 
		$finfo = new finfo(FILEINFO_MIME_TYPE);
		if (false === $ext = array_search($finfo->file($_FILES[$upload_id]['tmp_name']),$arr_extensions,true)) {  
			throw new RuntimeException('Invalid file format. Valid file formats: ' . implode(",",array_keys($arr_extensions)));  
		}
		// create image ressource from file
		$img = imagecreatefromjpeg($_FILES[$upload_id]['tmp_name']);  
		// use grayscale filter
		imagefilter($img, IMG_FILTER_GRAYSCALE);
		// define text to draw
		$string = "Das ist ein Test";  
		// define color of text
		$color = imagecolorallocate($img, 255, 98, 21);
		// calculate bounding box of rendered text
		$boxinfo = imageftbbox(80,0,"./script.ttf",$string);  
		// set x and x positions of textbox
		$text_x = (imagesx($img)/2)-($boxinfo[2]/2);
		$text_y = (imagesy($img)/2)-($boxinfo[7]/2);
		// draw text to image
		imagettftext($img,80,0,$text_x,$text_y,$color,"./script.ttf",$string);  
		// set header to return image
		header("Content-Type: image/jpeg");  
		// return rendered image with quality of 90%
		imagejpeg($img,NULL,90);
		// destroy ressource
		imagedestroy($img);
	}catch (RuntimeException $ex){
		echo $ex->getMessage();
	}
}

if (isset($_POST['btnUpload'])){  
	$valid_ext = array('jpg' => 'image/jpeg');  
	ProcessUploadedFile('file_upload',$valid_ext);  
}else{
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>File Upload</title>
</head>
<style type="text/css">  
body{font-family:Verdana, Geneva, sans-serif;font-size:0.8em}
</style>
<body>
Choose your image (only *.jpg / max. 3MB)
<form enctype="multipart/form-data" action="" method="POST">  
  <p>
	  <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />  
	  <input type="file" name="file_upload" accept="image/jpeg">  
	  <input type="submit"name="btnUpload" value="Upload" >  
  </p>
</form>
</body>
</html>    
<?php }?>
Mitglied: 113805
113805 17.05.2017 um 11:52:41 Uhr
Goto Top
Danke face-smile

War auf gutem Weg :P
Mitglied: 132895
132895 17.05.2017 um 12:09:26 Uhr
Goto Top
Mitglied: 113805
113805 17.05.2017 aktualisiert um 13:01:52 Uhr
Goto Top

Password, ist ja schön und gut auf den Hinweis wie man ein Beitrag schliesst..
Finde diesen Beitrag gerade einfach völlig unnötig von Dir. Und wenn ich gerade Deine Kommentare ansehe bei anderen Themen geht das genauso weiter.

Vielleicht möchte ich ja noch das Endresultat zeigen und noch weitere Fragen stellen bezüglich..?


Gruss
Mitglied: 132895
132895 17.05.2017 aktualisiert um 13:08:23 Uhr
Goto Top
Zitat von @113805:
Finde diesen Beitrag gerade einfach völlig unnötig von Dir. Und wenn ich gerade Deine Kommentare ansehe bei anderen Themen geht das genauso weiter.
Nö, das Scoreboard sagt da was anderes, und guten Content liefere ich hier zur Genüge. Nur wollen die meisten hier sich alles aufs Silbertablett gelegt bekommen.
Vielleicht möchte ich ja noch das Endresultat zeigen und noch weitere Fragen stellen bezüglich..?
bidde.
Mitglied: 113805
113805 17.05.2017 aktualisiert um 15:56:10 Uhr
Goto Top
Zitat von @132895:

Zitat von @113805:
Finde diesen Beitrag gerade einfach völlig unnötig von Dir. Und wenn ich gerade Deine Kommentare ansehe bei anderen Themen geht das genauso weiter.
Nö, das Scoreboard sagt da was anderes, und guten Content liefere ich hier zur Genüge. Nur wollen die meisten hier sich alles aufs Silbertablett gelegt bekommen.
Vielleicht möchte ich ja noch das Endresultat zeigen und noch weitere Fragen stellen bezüglich..?
bidde.

Ich danke dir das du dein Kommentar angepasst hast ;) so hört sich das schon viel höfflicher an finde ich.
Habe ich hier irgendetwas geschrieben von "kannst du mir mal schnell schreiben" "kann mir jemand ein code schreiben" - nein.

Ausserdem bin ich kein Anfänger wie du das so schön beschrieben hast vorhin. Ich kam gerade nicht darauf wie ich es machen soll.
Habe es jetzt so realisiert:

<?php
if (isset($_FILES['image'])) {  
    // 5MB
    $max_size = 5242880;
    $offset_left = 7;
    $offset_bottom = 50;
    $offset_bottom_line_diff = 20;
    // font=1-5
    $txt_font = 5;
    $txt_color = [
                  "r" => 255,  
                  "g" => 0,  
                  "b" => 0,  
                 ];
    
    $txt_content1 = "Text1";  
    $txt_content2 = "Text2";  
    $txt_content3 = "Text3";  
    $image_name = $_FILES['image']['name'];  
    $image_size = $_FILES['image']['size'];  
    $image_temp = $_FILES['image']['tmp_name'];  
    $image_type = $_FILES['image']['type'];  
    $image_error = $_FILES["image"]["error"];  
    if (!$image_temp) {
        exit();
    } elseif ($image_size > $max_size) {// > 5MB
        exit();
    } elseif (!preg_match("/\.(gif|jpg|png|jpeg)$/i", $image_name)) {  
        exit();
    } elseif ($image_error == 1) {
        exit();
    }
      
    switch (strtolower($image_type)) {
        case 'image/png':  
            $image_resource =  imagecreatefrompng($image_temp);
            break;
        case 'image/gif':  
            $image_resource =  imagecreatefromgif($image_temp);
            break;
        case 'image/jpeg':  
        case 'image/pjpeg':  
            $image_resource = imagecreatefromjpeg($image_temp);
            break;
        default:
            $image_resource = false;
            exit();
    }
        
    //location text
    $imagesize = getimagesize($image_temp);
    $x_offset = $offset_left;
    $y_offset = $imagesize[1] - $offset_bottom;
    //allocate text color
    $textcolor = imagecolorallocate($image_resource, $txt_color["r"], $txt_color["g"], $txt_color["b"]);  
    //text
    imagestring($image_resource, $txt_font, $x_offset, $y_offset, $txt_content3, $textcolor);
    $y_offset = $y_offset - $offset_bottom_line_diff;
    imagestring($image_resource, $txt_font, $x_offset, $y_offset, $txt_content2, $textcolor);
    $y_offset = $y_offset - $offset_bottom_line_diff;
    imagestring($image_resource, $txt_font, $x_offset, $y_offset, $txt_content1, $textcolor);
    //output watermarked image
    header('Content-Type: image/jpeg');  
    imagejpeg($image_resource, null, 90);
            
    imagedestroy($image_resource);
    die();
}
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">  
         <input type = "file" name = "image" />  
         <button type = "submit" name="btn-upload">upload</button>            
      </form>
      
   </body>
</html>

Das ist jetzt mal der Grundaufbau, werde es so oder so noch erweitern müssen.
Falls noch mehr Zeilen eingefügt werden müssen, würde ich hier selbstverständlich ein Array machen.

Jetzt noch einen schönen Tag