[PHP]Externe pic inlezen en opslaan

Pagina: 1
Acties:

  • Wolfenstein
  • Registratie: September 2000
  • Laatst online: 20:35
Wat is de snelste/ beste manier om een extern plaatje in te lezen en op te slaan op mijn webserver.

Dmv. van fopen() en dan een fwrite() te doen op de webserver of dmv. imagecreatefromjpeg() en dan imagejpeg() naar de server.

Ik weet dat ik ze allebei kan testen, maar ik heb weinig zin om 2 scripts te maken en er dan weer een weg te flikkeren, dus misschien dat jullie ervaring hier mee hebben

  • flat
  • Registratie: Mei 2000
  • Niet online
ik heb 't nog nooit getest, maar als je toch al zeker weet dat 't 'n echt werkend plaatje is, en je hoeft er neits aan te veranderen, dan zou ik gewoon je eerste methode te gebruiken

"Happiness is a way of travel, not a destination."
--Roy Goodman


Verwijderd

Het lijkt mij dat fopen() en fwrite() het snelste zijn, omdat die alleen maar lezen, en imagecreatefromjpeg() en imagejpeg() gooien er nog een berekening overheen.

Alleen je praat hier maar over milliseconden.

<nieuwsgierig modus>
Waarom is het eigenlijk zo belangrijk??
</nieuwsgierig modus>

  • Wolfenstein
  • Registratie: September 2000
  • Laatst online: 20:35
De server is niet een van de snelsten dus moet alles zo efficient en snel mogelijk gescript worden :)

Thnx voor de reply, ik denk dat je wel gelijk hebt dat imagecreatefromjpg() trager is door de conversie nar GD image.

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Wat dachten de heren van copy()?

edit:

Hmmm, weet trouwens niet of dat al werkt met huidige php versies :)

Ga maar snel de cvs compielen dan ;)


[edit2]
Heb het ff getest, en het werkt niet :(
[/edit2]

Dat is dan weer het einde van mijn (nu nog nutteloze, maar over een tijdje heel nuttige) bijdrage tot het archief van GoT!

Hopelijk gaat ddc dit niet lezen ;)

Verwijderd

En wat dacht meneer eamelink ervan dat copy niets meer is dan fopen en fwrite na elkaar in 1 functie :) ;)

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Op dinsdag 16 juli 2002 20:46 schreef NextGeneration het volgende:
En wat dacht meneer eamelink ervan dat copy niets meer is dan fopen en fwrite na elkaar in 1 functie :) ;)
Blijkbaar niet, anders zou het met de huidige peehaapee versie ook wel werken :)

Verwijderd

Ga gewoon voor fopen en fgets in rb modus, of gebruik zoiets als wget

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 16 juli 2002 20:46 schreef NextGeneration het volgende:
En wat dacht meneer eamelink ervan dat copy niets meer is dan fopen en fwrite na elkaar in 1 functie :) ;)
Niet helemaal natuurlijk.. Bij fopen icm fwrite wordt de data helemaal 'omhoog' gehaald in je script (het wordt beschikbaar als variable) terwijl met copy dit op een veel lager niveau afgehandeld wordt. Copy zal waarschijnlijk een stuk sneller werken.

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


  • Vigory
  • Registratie: November 2000
  • Laatst online: 15-04 10:26
Op dinsdag 16 juli 2002 19:40 schreef Wolfenstein het volgende:
De server is niet een van de snelsten dus moet alles zo efficient en snel mogelijk gescript worden :)
Kan je dan niet beter in de internet groep vragen wat een goede hosting provider is? :+

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 18-08 21:00
hier het script.
PHP:
1
<?$file="http://www.domein.nl/plaatje.jpg";$fin=@fopen($file, 'r');$mage=@fread($fin, 1024000);@fclose($fin);if($fin){        $fp=@fopen($dir."images/$name", "wb");        @fwrite($fp, $image);        @fclose($fp);}unset($image);?>

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 28-02 19:26
Op woensdag 17 juli 2002 07:43 schreef frankschers het volgende:
hier het script.
PHP:
1
<?$file="http://www.domein.nl/plaatje.jpg";$fin=@fopen($file, 'r');$mage=@fread($fin, 1024000);@fclose($fin);if($fin){        $fp=@fopen($dir."images/$name", "wb");        @fwrite($fp, $image);        @fclose($fp);}unset($image);?>
Dit klopt niet! als je $fin sluit zal hij 'FALSE' terug gegeven aan de if-lus! Dus slaat hij het plaatje niet op.
Dit zou al beter zijn:
PHP:
1
<?$file="http://www.domein.nl/plaatje.jpg";$fin=@fopen($file, 'r');$image=@fread($fin, 1024000);if($fin){        @fclose($fin);        $fp=@fopen($dir."images/$name", "wb");        @fwrite($fp, $image);        @fclose($fp);}unset($image);?>

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


  • Grum
  • Registratie: Juni 2001
  • Niet online
fijn @'buse ... kan iemand me daar eventjes de zin in dit voorbeeld van uitleggen ? :D

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Op woensdag 17 juli 2002 09:31 schreef Grum het volgende:
fijn @'buse ... kan iemand me daar eventjes de zin in dit voorbeeld van uitleggen ? :D
Nou kijk, dat is een soort kettingbotsing effect he :)

Als het allereerste met een @ fout gaat, rost hij gewoon door, maar gaat de rest natuurlijk ook allemaal mis :)...

Dan krijg je al die lelijke Warnings en errors in je beeld. Dat wil je natuurlijk niet.

Want als het fout gaat, wil je dat natuurlijk niet weten, alleen als het goed gaat.

Daarom heeft hij er ook geen checks in gebouwd, want dan merktie het als het fout gaat...

Logische verklaring zo? ;)
Pagina: 1