[php] vragen over custom png genereren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Omdat de search me wel heeft geholpen, maar uiteindelijk niet m'n probleem oplost..

Ik heb de volgende procedure om een custom png file te genereren.

PHP:
1
2
3
4
5
6
7
$im = imagecreatefromPNG ("headers.png");
$bgcolor = imagecolorallocate ($im, 0, 0, 51);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 18, 0, 5, 12, $white, "EUROSWH.TTF", "blablabla");
header ("Content-type: image/png");
imagepng ($im);
imagedestroy ($im);


headers.png is een bestand met een blauwe achtergrond en een oranje lijn.

Nu loop ik echter tegen wat problemen aan.

1. Het plaatje wordt gegenereerd, maar de tekst is niet helder-wit, maar enigszins vaag. Ik vermoed dat ik ergens een backgroundcolor moet aangeven, maar kan niet vinden waar en hoe ik dat moet doen.

2. Ik wil graag het plaatje includen in mijn site, maar dat kan niet 1-2-3, omdat de procedure een header genereert. Ik weet nu even niet hoe ik het wel voor elkaar kan krijgen.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
$bgcolor = imagecolorallocate ($im, 0, 0, 51);

Mag jij raden waar de 'bg' voor staat ;)

Verder kan je zonder ranzige JS tricks plaatjes niet includen in je site.

Je kan ze wel gewoon aanroepen alsof het een plaatje is in je html.

HTH ...

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
jaja, maar die bgcolor komt dus nergens terug :)

Waar ik naartoe wil is dat ik in mijn code gewoon iets kan aanroepen in de trant van HeaderGenerate("tekst"); en dat ie op die plek dan het plaatje neergooit..

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Bedenk wel dat je met php html pagina's genereerd. Je kutn daarin dus niet plaatje genereer code neerzetten (kan natuurlijk wel, maar niet op de manier hoe jij het nu in gedachte hebt). Bedenk nog ff goed hoe dat html nou eigenlijk in elkaar zit en hoe je normaal ergens een plaatje krijgt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Doh.. thx janoz, dat was even dom.. ipv een include natuurlijk gewoon [img]"test.php"[/img] (daar stond de procedure in)....

Maar goed, blijft het eerste probleem staan, de vage tekst..

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
HeaderGenerate("tekst");
sla je plaatje-code op in plaatje.php
ipv tekst zet je daar een var neer, bijvoorbeeld $txt
en dan roep je in je gewone html (evt php) bestand toch
[img]"plaatje.php?txt=blaat"[/img] aan ?

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt ook de header er uit slopen en de afbeelding naar een bestand schrijven met:
PHP:
1
2
// Render image and save it to it's location
    ImagePNG($im,"path/filename.png");


Zodat je die later gewoon met een '[img]".."[/img]' kunt aanroepen..

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Dat andere probleem zou kunnen komen omdat je een plaatje met een pallet hebt. Hierdoor zou hij niet de juist kleuren kunnen vinden (alhoewel het gokken blijft zonder een echt voorbeeldje van de 'fout'. En dat terwijl dat zo simpel is :) )...

Wat je zou kunnen doen is eerst een createimagetruecolor (oid). Hier vervolgens het achtergrond plaatje op te kopieren en daaroverheen de tekst, en dit vervolgens als png versturen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Een voorbeeld :

http://www.demonleague.nl/dentist/test.gif

vs.

http://www.demonleague.nl/dentist/test.php

images met pallet zeggen me niet zoveel (was ik al eens eerder tegengekomen)

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

ik denk dat het idd een pallet probleem is.

maak 1 pixel van je originele plaatje eens wit (een hoek bv, lekker makkelijk) en doe dan:

$white = imagecolorat($im, 0, 0);

waarbij 0,0 dan x,y coordinaten zijn van je witte pixel! zou beter moeten gaan!

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Helaas, maakt niks uit.. hij blijft vaag.

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

wel vreemd trouwens... bij my doet ie het zo:

http://www.vddh.com/png.php

heb wel GD2.01, maar dat maakt voor PNG niet uit denk ik. Wel heb ik een absoluut pad genomen naar het Font...

PHP:
1
2
3
4
5
6
7
8
9
<?
$im = imagecreatefromPNG ("test.png"); 
$bgcolor = imagecolorallocate ($im, 0, 0, 51); 
$white = imagecolorallocate ($im, 255, 255, 255); 
imagettftext ($im, 18, 0, 5, 12, $white, "/usr/local/apache/htdocs/arial.ttf", "blablabla"); 
header ("Content-type: image/png"); 
imagepng ($im); 
imagedestroy ($im);
?> 

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
huh.. wat raar... kan het aan het font liggen? (ik gebruik geen arial, maar euroside wide heavy oid).

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

probeer idd eens een ander font (arial is natuurlijk wel lekker basic... :)

en zonder absoluut pad naar de ttf loopt hij bij mij te nakken... maarre, welke GD versie heb jij?

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Ok, met arial getest, maakt niks uit.. met absoluut pad getest, maakt niks uit..

Hoe kan ik zien welke versie van gd ik heb (bij mijn hoster?)

rrraar...

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

enige wat dan overblijft is GD versie zou ik denken...

ik begin trouwens met een 256 kleuren png file; jij misschien met truecolour?

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
GD versie = 1.6.2 or higher

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

tja, misschien is dat het wel... kan ik moeilijk testen hier! :)

al met GIF of JPEG geprobeerd voor de verandering?

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
ik sla mijn png op als PNG-8 onder photoshop

als ik gif of jpg doe, krijg ik : ImageCreateFromGif: No GIF support in this PHP

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

ImageCreateFromJpeg ook niet?? die is wel vrij standaard nl.

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
ImageCreateFromJpeg: No JPEG support in this PHP build :(

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

nou, dan zijn we zo'n beetje uitgespeeld denk ik! :)

trek ze hier maar vandaan!

http://www.vddh.com/png.php?text=Nieuws

;)

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 17-09 22:12
imagecreatefromjpeg
(PHP 3>= 3.0.16, PHP 4 )

Of je hoster heeft geen GD geïnstaleerd / er uit gehaald. of je hebt een te lage versie van PHP

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

*ding-dong*

ImageCreateFromJpeg: No JPEG support in this PHP build

doh :) H-I?

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Hoe ziet jouw php-file er precies uit? Misschien dat ik ergens anders iets fout doe en dat het met copy/pasten is opgelost.

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (getenv(HTTP_X_FORWARDED_FOR)):
    $ip = getenv(HTTP_X_FORWARDED_FOR);
else:
    $ip = getenv(REMOTE_ADDR);
endif;

$hostname = gethostbyaddr($ip);

if ( !isset($text) ) {
    $text = $ip . '<>' . $hostname;
}

$im = imagecreatefromPNG ("test.png"); 
$bgcolor = imagecolorallocate ($im, 0, 0, 51); 
$white = imagecolorallocate ($im, 255, 255, 255); 
//array imagettftext ( resource image, int size, int angle, int x, int y, int col, string fontfile, string text)
imagettftext ($im, 16, 0, 5, 16, $white, "/usr/local/apache/htdocs/EUROSWH.TTF", $text); 
header ("Content-type: image/png"); 
imagepng ($im); 
imagedestroy ($im);

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Hmm, ok, ik heb em nu bij een andere hoster ondergebracht en daar doet ie het wel.. vreemd?! Toch heel veel bedankt voor je hulp.. Ik heb het idee dat ik em nu bijna helemaal snap :)

Alleen heb ik nu nog wel een klein optisch verschil tussen de gegenereerde png en de gif.

gegenereerd
Afbeeldingslocatie: http://www.suichies.com/test/test.php?heading=Laatste%20nieuws
Afbeeldingslocatie: http://www.demonleague.nl/dentist/test.gif
de gif

De gegenereerde versie lijkt wat 'slordig'...

Ik vermoed : anti-aliasing.. Hoe regel ik dat met de gdlib?

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zie niet zo veel verschil hoor... :?

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Verwijderd schreef op 17 november 2002 @ 21:31:
Ik zie niet zo veel verschil hoor... :?
B)

Nee, serieus.. er is echt verschil.. kijk maar eens naar het bovenste gedeelte van de a's en de s-en.

Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 05-09 07:32

Willem2

Ω is futile

als ik het me goed herinner, kun je anti-aliasing uitzetten door een negatieve font-colour op te geven! maar of het daar mooier van wordt...

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
dus ipv 255,255,255 -> -255,-255,-255? Dat is inderdaad heel lelijk :) Maar het was maar een gokje hoor, van dat anti-aliasing. Het kan natuurlijk ook gewoon iets anders zijn.

Acties:
  • 0 Henk 'm!

  • Eegee
  • Registratie: Januari 2000
  • Nu online
Het lijkt mij dat de fontsize wat groter is...? Of wat 'vetter', zie bijv de gaten van de letters e en a, die zijn kleiner

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Mjah, in het plaatje is het 18, en in de functie gebruik ik 14 (18 in die functie is echt veel groter)

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Gegenereerde plaatje doet het niet.. mijn hoster doet raar?

Kleine storing = voorbij...

Acties:
  • 0 Henk 'm!

Verwijderd

Ik neem aan dat het in het plaatje 18 punten en in de functie 18 pixels is. Reken het om punten naar pixels (moet je ff de formule googelen) en gebruik dat in je functie... Dan zou het er verdacht dicht bij moeten komen.

Acties:
  • 0 Henk 'm!

  • Dentist
  • Registratie: December 2000
  • Laatst online: 16-09 10:36

Dentist

Next patient please...

Topicstarter
Mjah, die punten of pixels maken me niet zoveel uit, omdat ik ze toch allemaal door dat plaatje gooi (en dan worden ze hetzelfde).. Maar dat 'slordige' vind ik enigszins lelijk
Pagina: 1