[php] image resize

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik maak een forum en die heb ik geplaatst in een tabel met een breedte van 540px. nu wil heb ik wat functies gemaakt waaronder de optie om images in te voegen (d.m.v. een url) probleem was alleen wel dat plaatjes groter dan die 540 px de hele tabel uit elkaar trekken.

Om dat probleem op te lossen haal ik via GetImagesize de breedte van een plaatje op en wanneer ze breeder zijn dan 400px resize ik ze gewoon... probleem opgelost zou je zeggen, en ja klopt ook wel... alleen duurt het nu wel eeuwen voordat de pagina geladen is wanneer er veel plaatjes in staan.

Ik heb de functie al zo klein mogelijk gemaakt, getimagesize wordt maar 1x uitgevoerd per plaatje, dat kan dus allemaal niet sneller via deze weg.

nu komt dus mijn vraag, zijn er nog andere opties om een plaatje (waar nodig) automatisch te resizen. Zelf dacht ik misschien aan <div> maar daar heb ik eigenlijk nog niet mee gewerkt en toen ik net zo even wat probeerde kreeg ik de indruk dat dat alleen goed werken gaat als ik de hele opmaak via css doe.. heb ik daar gelijk in? kan het uberhaubt via <div> of zijn er betere en vooral snellere opties??

Acties:
  • 0 Henk 'm!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Het kan via javascripts. Ik kan zo snel niet iets vinden, maar via google kan je vast wel iets vinden.

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Je zou de attributen van de HTML tag van een image kunnen veranderen. Dan veranderd alleen de groote van het plaatje niet de bestandsgroote.

code:
1
[img]"image.gif"[/img]


Maar je zou ook een functie in kunnen bouwen waarbij je de foto's eerst moet uploaden. Dan kan je met PHP van te voren het plaatje resizen naar gewenste afmetingen.

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Wat jij waarschijnlijk gewoon doet is:
code:
1
[img]"image.jpg"[/img]

Dat is geen goed idee, die image word dan alleen in die dimensies weergegeven maar fysiek blijft het plaatje kwa grote hetzelfde. Als iemand dus bijvoorbeeld een 500kb file upload die 1200x1500 pixels is moet de browser nog steeds een file van 500kb downloaden die 1200x1500 pixels is. Alleen laat de browser de image dan kleiner zien :)

Je moet de image dus bij het uploaden al daadwerkelijk verkleinen en opslaan in 2 formaten (1. het formaat waarin het in de site past, 2. het origineel en als men op de "thumbnail" klikt dan krijg je die file te zien)

Scheelt in laadtijden en dataverkeer :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke.. uploaden wordt em zowiezo niet.. en het aantal kb is denk ik nog niet eens het grootste probleem.. nu wordt er per plaatje meerdere keren een verbinding gemaakt met de desbetreffende server en dat kost tijd! ik wil dus graag dat een plaatje wordt binnengehaald en dat er dan pas wordt gekeken of ie tegroot is enz.

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Verwijderd schreef op 25 februari 2004 @ 18:48:
oke.. uploaden wordt em zowiezo niet.. en het aantal kb is denk ik nog niet eens het grootste probleem.. nu wordt er per plaatje meerdere keren een verbinding gemaakt met de desbetreffende server en dat kost tijd! ik wil dus graag dat een plaatje wordt binnengehaald en dat er dan pas wordt gekeken of ie tegroot is enz.
Oh zo, je hebt zelf die upload functie niet onder controle :?

Nouja, dan lees je toch even hierboven :) Is in 1 verbinding te doen hoor:

"HEH EEN IMAGE"
"IF groter then 540x*"
"[img]"url"[/img]"

En een mooi hyperlinkje naar het origineel eromheen :?

Acties:
  • 0 Henk 'm!

  • WeeDz
  • Registratie: September 2003
  • Laatst online: 16-04-2024
Je moet niet vergeten de thumbs op te slaan, want anders moet er iedere keer bij het laden van de pagina geresized worden!!

succes ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke. maar wat gebeurt er dan met plaatjes van 100px ?? wordt er niet mooier op he! en het is een forum vandaar dat ik niet de hele upload bepaal, dat moeten de users zelf maar regelen!

en dat IF groter dan 540px is het probleem nou juist.. dat vraagt bij veel plaatjes veel tijd!

[ Voor 22% gewijzigd door Verwijderd op 25-02-2004 19:27 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Jouw probleem is dat je de GD library gebruikt. Probeer ImageMagick, dat is veel sneller. Is wel een programma dat via de shell draait, en je server hoeft het natuurlijk niet te ondersteunen. Beetje uitzoeken dus...

[ Voor 39% gewijzigd door NMe op 25-02-2004 19:31 ]

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

Verwijderd

Topicstarter
hey mensen, lang leve javascript

ik vond het onderstaande script en dat voldoet aan alle eisen, stukken sneller !!

code:
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
function setDim(myImage)

     {
     //function sets width of an height of an image to 100px
     // and works out the height to keep aspect ratio
     intNewWidth =null;
     myNewHeight=null;
     myImage = document.getElementById(myImage)
     origWidth = myImage.width;
     origHeight = myImage.height;
     myNewHeight = 100;
     if (origHeight > 70){
          myNewHeight = 100;
     }
     else{
          myNewHeight = 50;
     }
     
     
     intNewWidth = origWidth*myNewHeight;
     intNewWidth = intNewWidth/origHeight;
     intNewWidth = Math.round(intNewWidth);
     myImage.width = intNewWidth;
     myImage.height = myNewHeight;
}   



and the image tag looks like this arrGetNews(nPicLoc, arrRow) is asp setting the location of the image.

[img]"/CPGCentral/newsUpLoad/<%=arrGetNews(nPicLoc,[/img]" onLoad="return setDim('image1');" border="1"/>


thx iedereen voor het meedenken!
Pagina: 1