Plaatje tonen met CSS

Ik heb de volgende CSS code: [code:1:9625d844d0].mimage1 { width: 50px; height: 50px; background: white url(/bla/bla/bla-1.gif) no-repeat 50% 50%; padding: 4px; }[/code:1:9625d844d0]

En zo laat ik het plaatje zien:

[code:1:9625d844d0]<div class=mimage1></div>[/code:1:9625d844d0]

Nu is mijn vraag of er in de CSS code geen manier bestaat om automatisch de hoogte en breedte aan te laten passen van het plaatje. Omdat ik hier automatische layouts aan het genereren ben, en omdat het om zeer veel plaatjes gaat is het op deze manier nogal een probleem.

(hoogte/breedte verschild telkens)

Er zal vast wel een manier zijn, maar ik vraag me af of dat slim is. Door in HTML de formaten van plaatjes te gaan veranderen gaat de kwaliteit ernstig achteruit. Ik raad je aan om met bijv. de batch functie van Irfanview alle plaatjes in 1 keer de goede grootte mee te geven.

Dit programma is echt supersnel, en kan wel honderden plaatjes aan.

Adriaan,

De beste manier is om de GetImageSize functie in PHP te gebruiken ( http://nl.php.net/manual/en/function.getimagesize.php ) en dan de CSS op te bouwen middels PHP.

tennapel: Yep, aan die oplossing dacht ik zelf ook even, maar helaas is dat nog niet waterdicht genoeg.

Omdat ik een systeem aan het ontwikkelen ben dat mensen zelf layouts naar eigen wens kunnen aanpassen (zonder CSS kennis) kunnen mensen een aantal specifieke plaatjes zelf aangeven. Echter, het probleem is dat wanneer ze de plaatjes (in dit geval op hun eigen server) later weer aanpassen zijn de maten niet meer correct. Ik kan dus de eerste keer best de plaatjes van hun server ophalen en de maten eruit trekken. Echter, ik kan niet elk uur op een gegeven moment 1.000 plaatjes gaan zitten updaten.

Ik kan natuurlijk ook de plaatjes gewoon direct in de HTML zetten, zonder height en weight waardoor hij altijd de goede maat pakt. Echter vond ik dat ook weer een flauwe oplossing, omdat het systeem veel effectiever zou werken wanneer ik het ontwerp volledig beheer in het CSS bestand.

Je kan GetImageSize toch ook gebruiken op moment dat de image gelezen wordt, dus op moment van 'request' van plaatje op de webserver? Of laat je het CMS HTML-pagina's genereren?

Dat zou kunnen bij een site met 100 bezoekers per dag. Het gaat hier om een interface die op andere websites komen te staan en in totaal honderdduizenden/miljoenen views per dag gaan maken. Als je per plaatje (die er zo'n 9 keer per pagina op staan) getimagesize() naar een andere server gaat doen, moeten eerst het plaatje van die andere server af getrokken worden en dan gaat PHP kijken wat de maat is (redelijk CPU intensief als het om hogen aantallen gaat).

Kortom, ik zou het wel bij de eerste “request”-submit pagina kunnen doen, wanneer een template aangemaakt word. Alleen gaat het dan mis wanneer mensen de plaatjes op eigen server weer aanpassen.

Is er dus gewoon geen één oplossing om dit in CSS op te lossen?

Ik heb een lang en een kort antwoord. Het korte antwoord is: nee ;-)

Ik zou bij aanpassing van een image door de gebruiker de HTML pagina actief door de gebruiker opnieuw laten genereren; of een hele grote server kopen.

Overigend: de height en width niet specificeren zorgt ervoor dat de pagina’s heel traag worden bij 9/10 images per pagina, zeker als er al veel HTTP-requests worden gedaan.

Bedankt.. ik ga er gewoon voor om bij de eerste HTTP-request de sizes op te halen.

Plaatjes wil je niet laten aanpassen. Dat komt de kwaliteit van de plaatjes niet ten goede. Wat je in mijn ogen wilt is je klanten opvoeden... ;-)