[CGI/Perl] Plaatje veranderen met GD

Pagina: 1
Acties:

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
Ik ben opzoek naar een manier om tekst toe te voegen aan een plaatje.
Ik wil dus zeker geen gebruik maken van een html layer die tekst plaatst bovenop een plaatje. Ik weet van GDlib dat die enige mogelijkheden hiertoe bezit maar ik ken eigenlijk alleen de resize in PHP hiervan. is er ook zoiets voor in CGI ?!?
Zo ja waar kan ik iets hierover vinden.. heb al flink gezocht maar oreily en cpan zeggen weinig als je niet precies weet waar je naar moet zoeken

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:03

Creepy

Tactical Espionage Splatterer

Met behulp van de zoekwoorden PERL en GD kwam ik o.a. op onderstaande link uit.

http://stein.cshl.org/WWW/software/GD/

Waarschijnlijk is jouw google stuk?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
verkeerde zoektermen gebruikt 8)7
Anyways.. dit is een lastig stukje om te gebruiken blijkbaar ik ga nog wel even zoeken naar een bruikbaarder voorbeeld waar tekst in een bestaand plaatje wordt gezet

Verwijderd

$im = imagecreate(150, 30);
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);

hierbij is $im een tekening met een string!

(dit is slechts een stukje van een code! misschien helpt het je!)

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
nog simpeler om mijn doel te bereiken.
doel: stuk tekst plakken in bestaand plaatje
Perl:
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl -w

use GD;

$im = newFromPng GD::Image("../../images/frontpage/circle.png");
$black = $im->colorAllocate(0,0,0);  
$im->string(gdSmallFont,2,10,"Testing",$black);
binmode STDOUT;
print $im->png;


Echter eht vervelende is als ik deze code ga gebruiken in een bestaand script dat een html pagina vertoond dan krijg ik blijkbaar de inhoud van de png op mijn scherm te zien dat is niet echt de bedoeling

code:
1
2
3
4
5
----Heel veel van dit----
×î‹Ãæ÷ûýÀßñ½ÝñºÜð‡Áå¼ÜñöúýµÙï“ÈèÇâó×ê
ëõûÀßòýþÿÂàò§ÒìÚì÷²×î¿ÞñËäôšËéªÓíÉãóãðù¼ÝñÇãóÙë÷»ÜðÆçøûýêôúìö
¸Ûð™ÊéÃàòÊäôÅç²ØîÖêöï÷ü›
----Nog meer van dit----


Ik denk dat het met die binmode te maken heeft in combinatie met de contenttype header van HTML maar ik kan hem ook niet weglaten

[ Voor 62% gewijzigd door Daniel304 op 24-03-2004 12:06 ]


  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

Daniel304 schreef op 24 maart 2004 @ 12:02:
nog simpeler om mijn doel te bereiken.
doel: stuk tekst plakken in bestaand plaatje

Echter eht vervelende is als ik deze code ga gebruiken in een bestaand script dat een html pagina vertoond dan krijg ik blijkbaar de inhoud van de png op mijn scherm te zien dat is niet echt de bedoeling
Plaatjes worden door de browser gedownload als een los bestand, en zijn nooit geinlined in de HTML zelf. Je zal dus met img tags moeten werken, en vanuit daar zorgen dat de CGI een plaatje genereert.

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
owkay.. dus de manier is om het volgende aan te roepen
HTML:
1
[img]"image_gen.cgi"[/img]

Op zich vreemd dat je alsnog in het image_gen.cgi een content-type header op moet geven
Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl -w

use CGI 'param';
use GD;

$image = param(image);

print "Content-type: text/html\n\n";

$im = newFromPng GD::Image($image);
$black = $im->colorAllocate(0,0,0);  
$im->string(gdSmallFont,2,10,"Testing",$black);
binmode STDOUT;
print $im->png;

[ Voor 121% gewijzigd door Daniel304 op 24-03-2004 12:49 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 26-05 23:14
Waarom content-type "text/html"? Bedoel je niet "image/png"? Grote kans dat alleen Internet Explorer hier goed mee omgaat (want die gaat een beetje gokken wat voor plaatje het is n.a.v. de header).

Het zou ook best kunnen dat die Content-Type header verplicht is. Als je 'm weg zou laten zou je webserver er dus alsnog eentje toevoegen, denk ik, en dan ben je misschien nog wel verder van huis.

Als je je content-type echt goed hebt gezet (op "image/png" hier dus) zou je het plaatje (in alle browsers zelfs) ook direct moeten kunnen laden.

[ Voor 58% gewijzigd door Soultaker op 24-03-2004 13:32 ]

Pagina: 1