Afbeelding (JPG) genereren van HTML/XML

Pagina: 1
Acties:

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Hallo,

Ik heb een scriptje waarmee een "afbeelding" wordt gegenereerd. Voorbeeld van de broncode van hetgeen gegenereerd wordt is:

HTML:
1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>Test</title>
</head>

<body>

<?xml:namespace prefix = v ><v:shape id=1 style="LEFT: 0px; BEHAVIOR: url(#default#VML); WIDTH: 200px; POSITION: absolute; TOP: 0px; HEIGHT: 100px" coordsize = "200,100" filled = "f" strokecolor = "black" strokeweight = "2pt" path = " m54,18 l54,18,54,19,51,23,49,27,46,38,44,51,42,73,40,95,64,97,72,89,81,83,84,78,87,75,88,73,89,72,89,71,87,68,84,63,75,57,62,51 49,48,40,45,32,42,27,41,24,39,23,39,23,38,33,36,43,35,62,31,86,29,108,27,130,23,146,23,154,22,160,22,163,22,167,22,169,22,170,23 170,24,170,27,166,33,158,45,145,60,130,73,118,81,114,83,112,84,111,84,110,83,110,82,111,81,113,80,118,78,126,74,134,71,137,70,140,69,141,68 141,67,141,65,137,60,125,51,115,45,104,39,98,36,92,33,88,31,87,31,86,30 e"><v:path style="BEHAVIOR: url(#default#VML)"></v:shape></v:path>

</body>
</html>


Het resultaat is dus nog geen plaatje, zoals je ziet. Ik wil dit dus wel opslaan als een plaatje. Het liefts JPG. Heb al van alles uitgeprobeerd met de image-functies van PHP, maar kom hier allemaal niks verder mee. Ik krijg óf de tekst gewoon te zien als plaatje, óf ik krijg helemaal niks/een fout.

Is er misschien iemand die mij kan helpen/in de goede richting kan sturen? Ik zat zelf te denken aan iets van een screenshot maken van deze gegenereerde pagina, die in een IFRAME staat o.i.d., maar weet niet of dit met PHP mogelijk is...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je maakt clientside een afbeelding, en wil hem serverside opslaan? Of begrijp ik je nu verkeerd? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Als er maar een afbeelding (JPG) van gegenereerd kan worden. Dan kan ik hem zelf wel serverside opslaan, dat is het probleem niet. Want hij moet inderdaad serverside opgeslagen worden. Maar het gaat mij er dus gewoon om dat er een JPG van gegenereerd wordt.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

waarom maak je dat plaatje dan niet met PHP :?

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Erkens schreef op donderdag 02 juni 2005 @ 18:25:
waarom maak je dat plaatje dan niet met PHP :?
Omdat dat niet mogelijk is zoals mijn bedoeling is. Voor zover ik weet iig...

Ik laat de bezoeker een plaatje tekenen, client-side dus. Dit plaatje moet opgeslagen kunnen worden als JPG-afbeelding.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Frank-2k schreef op donderdag 02 juni 2005 @ 20:26:
[...]

Omdat dat niet mogelijk is zoals mijn bedoeling is. Voor zover ik weet iig...

Ik laat de bezoeker een plaatje tekenen, client-side dus. Dit plaatje moet opgeslagen kunnen worden als JPG-afbeelding.
Dan zul je op de een of andere manier (in een applet ofzo) je plaatje moeten opslaan en posten naar de server of iets dergelijks.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
-NMe- schreef op donderdag 02 juni 2005 @ 20:32:
[...]

Dan zul je op de een of andere manier (in een applet ofzo) je plaatje moeten opslaan en posten naar de server of iets dergelijks.
Was het maar zo makkelijk... Het posten naar de server is op zich niet zo'n probleem, maar om er dan dus een JPG van te maken, wordt wel een probleem, denk ik.

Maar ik heb ooit iets gehoord dat je van bepaalde coördinaten ofzo of van een bepaalde pagina (in een IFRAME) een "screenshot" van kunt nemen, en dat je die dan kunt opslaan als JPG. Iemand hiermee bekend of een andere oplossing?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Mjah, intussen dwalen we heel erg af naar clientside programmeren. Ik zal dit topic even een duwtje geven naar Webdesign & Graphics, waar het beter op zijn plaats is. :)

PW>>WG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
-NMe- schreef op donderdag 02 juni 2005 @ 20:39:
Mjah, intussen dwalen we heel erg af naar clientside programmeren. Ik zal dit topic even een duwtje geven naar Webdesign & Graphics, waar het beter op zijn plaats is. :)

PW>>WG
Hoezo zou dit clientside zijn dan? Het is mijn bedoeling om het met PHP te doen, dus volgens mij geen clientside...

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Frank-2k schreef op donderdag 02 juni 2005 @ 20:40:
[...]

Hoezo zou dit clientside zijn dan? Het is mijn bedoeling om het met PHP te doen, dus volgens mij geen clientside...
als je een plaatje clientside hebt dan heeft PHP daar niks mee te maken, het enige wat je wilt is dat plaatje doorsturen naar een PHP script ;)

offtopic:
Overigens doet jouw HTML hier niks als ik dat uitprobeer :?

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Het doorsturen is geen probleem, dat heb ik dus al. Nu moet ik nog zorgen dat die door PHP wordt omgetoverd naar een JPG-afbeelding.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ow? Wat stuur je door dan? Een shape? Die kent PHP niet hoor. :P Je zal ofwel je plaatje in PHP moeten genereren, ofwel in JS/Flash/ActiveX/whatever en daarna doorsturen met PHP. Dat eerste wil je niet, en dus hoort dit topic in W&G waar mensen je wat kunnen vertellen over het de wondere wereld van clientside scripting. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Ah, ok. We zullen zien wat het hier oplevert dan :)

Een voorbeeld is trouwens te vinden op http://php.grijze.nl/autograph/. In het vakje met die stippeltjes erom kun je wat krabbelen met je muis. Als je op 'Opslaan' klikt ga je verder naar de pagina waar het heengestuurd wordt. Van hetgeen je daar dus te zien krijgt wil ik graag een JPG-afbeelding van hebben.

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ow, wacht dit werkt alleen met IE zie ik 8)7
maar je hebt toch al die punten die je doorkrijgt waar een lijntje moet staan, daarmee kan je dus prima een plaatje tekenen zoals ik al zei :)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Als je inderdaad alle punten doorkrijgt, dan zou je kunnen kijken naar deze functie in PHP, maar je plaatje zal daarmee nooit exact hetzelfde uitzien als de tekening die je clientside maakt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

waarom zou je plaatje er niet hetzelfde uit kunnen zien :?
als je alle punten hebt moet dat toch echt geen probleem zijn lijkt me

Verwijderd

Dat is een stukje VML (IE-only).

Je zou het pad van de shape kunnen uitlezen met JS - feitelijk doe je dat ook al in de move() functie -en de uitgelezen waarden kunnen dumpen in een hidden form field. Een PHP script kan deze waarden bij het submitten uitlezen en er met de GD lib een JPG van maken.

Dat lijkt me op zich allemaal wel mogelijk, maar het zou nog aardig wat werk zijn om het goed te doen.

  • f.grijze
  • Registratie: Augustus 2002
  • Laatst online: 28-05-2025
Als je op in het vakje (clientside) meerdere "tekeningetjes" maakt, dan krijg je al meerdere <v:shape tags. Voor elke keer dat je de muis los laat. Hoe kan ik deze dan allemaal apart uitlezen? Het zal vast wel mogelijk zijn, alleen zou ik zo niet weten hoe dit mogelijk is.

Is er geen andere manier om dit om te zetten naar een afbeelding? Bijvoorbeeld al die shapes die gegenereerd worden in een DIV-layer zetten en die dan grabben (met bijvoorbeeld JS)? Ik zou zo niet weten hoe ik het moet doen trouwens, dus vandaar dat ik hier even naar de mogelijkheden vraag...

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Dat grabben is niet mogelijk, je zult de tekening echt opnieuw in PHP moeten renderen. Ik zou zeggen ga lekker met de expat-based XML functies van PHP aan de slag, dan moet het best te doen zijn.

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Als je nou SVG gebruikt ipv VML, dan kan je 'm server-side renderen met bv. Batik. Maar handiger is het om hem gewoon als .svg op te slaan, dan kan je hem later nog wijzigen met bv. InkScape.

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


  • bredend
  • Registratie: September 2001
  • Laatst online: 07:54
Nog een puntje: als je met lijntekeningen werkt kan je daar beter .gif voor nemen. Krijg je nog een mooier resultaat van ook :)

Verwijderd

Ik heb even een voorbeeldje gemaakt: http://variomatic.quickhost.nl/vml2png/

IE 6 past antialias toe op VML, maar de PHP-GD functies niet (die imageantialias() functie deed niet bijster veel). Vandaar dat de door PHP gefabriceerde afbeelding er wat gekartelder uitziet.
In plaats van JPG heb ik er PNG van gemaakt (JPG afbeeldingen van PHP-GD zien er al helemaal niet uit). Als er hier een GD kenner rondhangt die weet hoe je zo'n plaatje mooier krijgt, verneem ik het graag.

Het is snel gemaakt, dus er zullen ongetwijfeld bugs in zitten.
Pagina: 1