Image verklein script - te traag
Ik heb voor mijn website een script gemaakt om een image die via een link wordt opgehaald vanaf een externe locatie te verkleinen.
Alleen het probleem is dat het zeer traag gaat.
Is er misschien een andere optie ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php if(substr($foto, 0, 7) == "http://")
{
if($foto != "")
{
$foto = str_replace(" ", "%20", $foto);
}
if(@file_get_contents($foto))
{
$size = getimagesize($foto);
// max grootte = 130 x 130
if($size[0] > $size[1])
{
// horizontaal
if($size[0] > 130)
{
$deler = $size[0] / 130;
$hsize = "130";
$vsize = round($size[1] / $deler);
}
else
{
$hsize = $size[0];
$vsize = $size[1];
}
echo "<a href=\"".$mod_url."\"><img src=\"".$foto."\" border=\"0\" width=\"".$hsize."\" height=\"".$vsize."\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
}
else
{
// verticaal of vierkant
if($size[1] > 130)
{
$deler = $size[1] / 130;
$vsize = "130";
$hsize = round($size[0] / $deler);
}
else
{
$hsize = $size[0];
$vsize = $size[1];
}
echo "<a href=\"".$mod_url."\"><img src=\"".$foto."\" border=\"0\" width=\"".$hsize."\" height=\"".$vsize."\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
}
}
else
{
echo "<a href=\"".$mod_url."\"><img src=\"/siteimages/geen_foto_s.gif\" border=\"0\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
} />[/code]
{
if($foto != "")
{
$foto = str_replace(" ", "%20", $foto);
}
if(@file_get_contents($foto))
{
$size = getimagesize($foto);
// max grootte = 130 x 130
if($size[0] > $size[1])
{
// horizontaal
if($size[0] > 130)
{
$deler = $size[0] / 130;
$hsize = "130";
$vsize = round($size[1] / $deler);
}
else
{
$hsize = $size[0];
$vsize = $size[1];
}
echo "<a href=\"".$mod_url."\"><img src=\"".$foto."\" border=\"0\" width=\"".$hsize."\" height=\"".$vsize."\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
}
else
{
// verticaal of vierkant
if($size[1] > 130)
{
$deler = $size[1] / 130;
$vsize = "130";
$hsize = round($size[0] / $deler);
}
else
{
$hsize = $size[0];
$vsize = $size[1];
}
echo "<a href=\"".$mod_url."\"><img src=\"".$foto."\" border=\"0\" width=\"".$hsize."\" height=\"".$vsize."\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
}
}
else
{
echo "<a href=\"".$mod_url."\"><img src=\"/siteimages/geen_foto_s.gif\" border=\"0\" class=\"overzicht_afb\" alt=\"Klik voor meer informatie!\" /></a>";
} />[/code]
Gewijzigd op 01/01/1970 01:00:00 door Rik Engelen
ipv file_get_contents curl gebruiken, ook zou je het geresizede plaatje op je eigen server op kunnen slaan. Bij het uitlezen controleer je dan of je er eentje in de 'cache' hebt, zoniet, ga dan pas ophalen..
Je zou eerst met het commandline commando wget het bestand kunne ophalen. Dan 775 chmod en dan door je script trekken
Zal eens kijken
Heeft de server er moeite mee, of duurt het laden van de plaatjes lang? Als het het tweede is: dan moet je de afbeeldingen verkleinen met PHP en op je eigen server gaan, of de server waarvan 'hotlinkt' heeft gewoon een trage verbinding (upload). Dan kun je nogsteeds het beste verkleinen en op je eigen server opslaan, en als het bestand al gestaat, gewoon weergeven, bestaat het niet, naar je server downloaden en verkleinen. Zelfde geld voor als je eigen server er moeite mee heeft, dan moet je gewoon controleren of een verkleinde versie van de afbeelding al op de server staat, zoniet moet je deze downloaden en verkleinen.
Perfect zo een hoop antwoorden hier kan ik wat mee.
En juist omdat het voor een redelijk portaal is is dit beter, zeker voor bezoekers met een niet zo'n grote upload.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
De productenfeeds laad ik in met phpmyadmin in csv formaat.
Nu staat er dus een link naar de image vandara dat het zo gaat.
Huh, kun je het misschien iets duidelijker uitleggen. En eerst van PMA naar CVS lijkt me onlogisch. Anyway, ik ga even een frietje bakken en een frikadel.
Ik haal de csv file ergens op zeg maar. deze bewerk ik en voer die weer in via PMA zodat er weer producten bij komen.
Owja smakkelijk
Ik snap wat je bedoelt, alleen denk niet dat dit voor ons zo werkt. het probleem is dan dat de images zich gana op stapelen aangezien we naar 100.000 producten toegaan. Er moet dan ook iets komen wat ze weer verwijderd. Dan word het allemaal iets complexer.
Als je hem van een externe loctie op haalt kost dat zoveel dataverkeer meer ?
En nee, dat kost niet meer dataverkeer, maar wel voor de bezoeker.
PHP Newbie schreef op 06.06.2008 17:04:
Je resized de afbeeldingen helemaal niet. De zegt gewoon tegen de browser dat hij de afbeeldingen wat kleiner moet weergeven. Een afbeelding echt verkleinen kun je doen met de functie imagecopyresampled()
Klopt wat je zegt, alleen kan dit op een snellere mannier. De complete foto verkleinen is voor ons gene optie omdat wij hem op een ander punt groter weergeven. Heb vandaag even getest en het script weg gehaald en dan de pagina opgeroepen. was 100x sneller dus het script vertraagd helaas de boel.