Avatar billede george Nybegynder
13. december 2014 - 19:22 Der er 7 kommentarer

Hvordan sløver jeg loading af billede ned?

Jeg har fundet scriptet nedenfor som skulle gøre at et billede loader langsommere end normalt for at simulere en langsom internet forbindelse.

java script:
$fp = fopen( $path, 'rb');
while(!feof($fp)) {
        print(fread($fp, 1024));
        flush();
        Sleep(1);
    }
fclose($fp);

HTML:
<img src="images/gifLoager.php" />

Don't forget to appropriately set the headers before outputting the binary data

Hvad er det helt nøjagtigt der skal stå i headeren for at få det til at virke?
Avatar billede george Nybegynder
13. december 2014 - 19:27 #1
Bliver lige opmærksom på at det emåske ikkke er Javascrip men php og at det vist ikke var her jeg skulle have stillet spørgsmålet.

Kan man slette det på nogen måde?
Avatar billede Slater Ekspert
13. december 2014 - 19:29 #2
Du skal bare sætte en Content-Type header for at få browseren til at vise det som et billede.

Dvs. øverst i din PHP-fil skriver du
header ('Content-Type: image/gif');

- Hvis det er et GIF-billede. Ellers image/jpeg eller image/png osv.
Avatar billede george Nybegynder
13. december 2014 - 20:28 #3
Er det rigtigt det jeg har lavet her? For det virker ikke.

<?php
header('Content-Type: image/jpeg');
readfile('images/0100-Antilope-BR-e1415905123571.jpg');
?>
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="UTF-8">
.
.
.
Avatar billede george Nybegynder
13. december 2014 - 20:34 #4
Hvis jeg fjerner readline kommer der bare en lille firkant oppe i hjørnet, den med at billede ikke kan vises.

Hvis jeg lader readline stå kommer billedet frem, men uden delay på 1 sek.
Avatar billede george Nybegynder
13. december 2014 - 20:35 #5
1 sek = 1000 i sleep linjen ;-)
Avatar billede george Nybegynder
14. december 2014 - 08:33 #6
Ahh 1 var så 1 sek og ikke 1000 som man normalt ser/bruger ;-)

Fandt dette på en side men kan stadig ikke få det til at virke.

You can use php's sleep($seconds) function to slow down a page load. However, you would need to turn implicit output buffer flushing to "on" with ob_implicit_flush(true); if you want anything to be sent to the user's browser before the page is done being processed. Otherwise your page won't have ANY contents until it's done loading. Calling sleep alone won't do the trick.

http://php.net/manual/en/function.flush.php

Koden ser sådan ud nu:
I imageloader.php

<?php
$path = $_GET['file'];
$filename = explode( '/', $path );
$filename = $filename[count( $filename) - 1];


header('Content-Description: File Transfer');
header('Content-Type: Content-Type: image/jpeg');
header('Content-Length: '.filesize($path));
header('Content-Disposition: filename="'.$filename.'"');

//readfile($path.'/'.$file_name); // This doesnt work as it loads the whole file!!!!
$fp = fopen( $path, 'rb');
while(!feof($fp)) {
        print(fread($fp, 1024));

        ob_implicit_flush(true);
        sleep(1);
    }
fclose($fp);

?>

Og i html koden ser linjen sådan ud:
<img src="images/picloader.php?file=0100-Antilope-BR-e1415905123571.jpg" />
Avatar billede george Nybegynder
14. december 2014 - 08:35 #7
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester