[PHP] Hoe foto slices efficient bufferen zonder opslaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Hey!

Sorry voor de vage topictitel, ik weet zo gauw niet hoe ik het anders moet beschrijven.

Ik zit met het volgende: Ik heb een schuifpuzzel in JS gemaakt en nu is het de bedoeling dat je een willekeurig plaatje op kunt vragen. Deze wordt dan gesliced en in stukjes opgestuurd naar de client, waar de slices geshuffled worden.

Het probleem:
Ik heb een script geschreven dat een jpeg laadt en het in stukjes sliced, helemaal dynamisch (groote van puzzel, etc)!
Maar nu! De stukjes kan ik niet zomaar naar de client sturen aangezien je (nog? :D ) geen plaatjes "inline" in je HTML kan zetten. Je moet dus wachten tot de browser de puzzel stukje voor stukje opvraagt. Zo moet het script elke keer opnieuw geladen worden, het plaatje laden en slicen. Niet zo goed voor de performance. Het komt op een erg drukke no-profit site te staan en daarom wil ik het zo efficient mogelijk opzetten.

De mogelijke oplossingen:
:/ Zoals boven beschreven een script maken dat gewoon een slice maakt en opstuurt. Kost erg veel geheugen en het script moet 8 of zelfs 15 keer (!) draaien voor elke puzzel.

:/ De slices in een run maken en dan op de server opslaan. Probleem: waar zet je ze neer? In '/tmp/'.$session_id.'_puzzel/' . Dan moet je maar weer zien dat ze verwijdert worden. En hoe doe je dat?

:/ Hetzelfde maar dan in database plaatsen. Moet als BLOB en dan met createimagefromstring een image maken en die vervolgens opsturen. Traag (denk ik) en bah.

:/ Het script dat de HTML schrijft in een loopje zetten nadat de HTML verstuurd is en wachten tot de browser alle plaatjes opgehaald heeft. Erg error-prone. Blijft gegarandeert vaak hangen.

:/ Plaatjes in $_SESSION wegschrijven. Images kan je niet erinzetten, serializen kan ook niet. Je kan ze wel naar string omzetten door ze te outputten en met ob_start() op te vangen ((c) thomaske) maar dat lijkt mij ook niet performance bevordelijk en ik krijg de kleuren niet goed.

Welke is het minst crappy / traag ? Of vergis ik mij in een (of meerdere) van mijn aannames over tegenvallende performance? Iemand nog een beter idee?

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zou gaan voor het eenmalig maken van alle benodigde slices bij het uploaden van het plaatje, desnoods met ImageMagick in plaats van GD (IM is sneller...veel sneller :P).

'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.


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Dat gaat niet werken! Vorig jaar werden er 1266 bijna 4 000 foto's geupload. En het is de bedoeling dat je een soort e-card kunt versturen. Zie je een leuk chickie op een foto, stuur je een e-card naar een vriend en die mag vervolgens gaan puzzelen...

Denk echter wel dat we gewoon de leukste 25 foto's eruit pakken en die gaan pre-slicen. Maar ja, dat is stukken minder leuk!

[ Voor 34% gewijzigd door JayVee op 23-02-2005 23:52 ]

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Inderdaad. Je zou in mappen kunnen denken aan een map met daarin per foto een map met als naam bijvoorbeeld de MD5 van de foto. Dan kan je deze eenvoudig opzoeken.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

JayVee schreef op woensdag 23 februari 2005 @ 23:34:
Dat gaat niet werken! Vorig jaar werden er 1266 foto's geupload. En het is de bedoeling dat je een soort e-card kunt versturen. Zie je een leuk chickie op een foto, stuur je een e-card naar een vriend en die mag vervolgens gaan puzzelen...

Denk echter wel dat we gewoon de leukste 25 foto's eruit pakken en die gaan pre-slicen. Maar ja, dat is stukken minder leuk!
Dat is dan jammer voor je, maar je zal nou de afweging moeten gaan maken tussen snelheid en functionaliteit. Dat verwijderen is niet moeilijk trouwens. Je hebt toch een database met daarin een id voor elke e-card neem ik aan? Maak dan gewoon een mapje aan met als naam het nummer van de e-card, en sla daar de slices in op. Verwijder 2 weken na het versturen van een kaart (bijvoorbeeld) dat mapje, en je bent klaar... :?

'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.


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Het gaat om de site www.batavierenrace.nl (s'werelds grootste estafetteloop). Op deze site hebben we een enorme piek in de week na de race. Iedereen gaat foto's en uitslagen bekijken.
Als we dus de slices van een e-card na twee weken verwijderen hebben we ongeveer een week lang elke e-card, daarna geen...
Aangezien je op deze manier ook nog eens slices dubbel gaat maken lijkt me dat voor deze toepassing geen geschikte oplossing.

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
als je toch al zo lekker bezig bent met Javascript, waarom slice je het plaatje dan gewoon niet, maar gebruik je gewoon het origineel voor elke slice als CSS background-image met telkens een andere background-position? ok je kunt gaan cheaten maar who cares voor een schuifpuzzel :)

Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Hheeeeyyyy!!! Dat is een heel goed idee! Ga ik meteen morgen proberen!

ASCII stupid question, get a stupid ANSI!


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

Topicstarter
Yes! Werkt fantastisch! Kom hier maar lekker spelen! 8)

ASCII stupid question, get a stupid ANSI!


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

JayVee schreef op donderdag 24 februari 2005 @ 19:55:
Yes! Werkt fantastisch! Kom hier maar lekker spelen! 8)
Met een kleinere resolutie ziet het er niet zo mooi uit , de plaatjes lopen "over" elkaar :) .

DM!


Verwijderd

Joepie de poepie! Ik heb hem opgelost!!!
JHS schreef op donderdag 24 februari 2005 @ 20:16:
[...]

Met een kleinere resolutie ziet het er niet zo mooi uit , de plaatjes lopen "over" elkaar :) .
Alleen in de breedte, omdat de browser de kolommen kleiner maakt. Als de tekst naast het plaatje weggehaald wordt en het plaatje niet meer dan 640 pixels breed is zal het geen probleem moeten zijn.
Pagina: 1