auto image resize op forum

Pagina: 1
Acties:

  • andrew
  • Registratie: Februari 2001
  • Laatst online: 10-09-2024
Hallo, ik heb een probleempje met mijn forum, ik ben bezig met een script dat als iemand een plaatje wil posten mbv
code:
1
[img]http://url[/img]

maar dit is breder dan 400 pixels dan moet hij het 400 pixels breed maken.

Nu heb ik het volgende geschreven maar dit werkt niet:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
while ($imgmessage = preg_replace("/\\[img\]([^\\[]*)\\[\/img\]/i","\\[image\]\\1\\[/\image\]",$message)) { 
if (preg_match("[image]", $imgmessage)) { 
$img = explode ("[image]", $imgmessage); 
$plaatje = $img[1]; 
$img = explode ("[/image]", $plaatje); 
$img = $img[0]; 
if ($img != "") { 
$size = GetImageSize ("$img"); 
$width = $size[0]; 
$height = $size[1]; 
if ($width > 400) { 
$var = $width / 400; 
$width = 400; 
$height = $height / $var; 
$before = "[image] $img [/image]"; 
$after = "[img]\"$img\"[/img]"; 
$message = str_replace($before, $after ,$imgmessage); 
} 
} 
} 
} 
?>

En ik denk dat dit ook niet werkt als er meerdere plaatjes in 1 post voorkomen.

edit:


hmmz moest nog [php] voor :(


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat dacht je van iets als:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$var = preg_replace('|[img].*[/img]|Uie', 'image_function(\1)');

function image_function($imgage);
{
    $size = ...;
    // Calc size
    return "<img ... width=.....>";
}
?>

?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:21

Janoz

Moderator Devschuur®

!litemod

Ik kan hier eigenlijk maar 1 ding op zeggen:

Niet doen..

Op dit moment wordt voor het opmaken van 1 pagina door de server eerst alle plaatjes gedownload (om de grootte van het plaatje op te vragen moet immers het hele plaatje worden gedownload). Pas als dat klaar is wordt de pagina naar de gebruiker gestuurd. Dit zorgt ten eerste voor een enorme berg dataverkeer voor je server, en ten tweede voor een erg trage verwerking van de plaatjes.

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


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Dit wordt toch server side uitgevoerd? Dus 'downloaden' zou snel zijn. Maar GetImageSize() zou het plaatje toch ook direct kunnen openen?

Verwijderd

Op zondag 13 januari 2002 21:44 schreef OlafvdSpek het volgende:
Dit wordt toch server side uitgevoerd? Dus 'downloaden' zou snel zijn. Maar GetImageSize() zou het plaatje toch ook direct kunnen openen?
True, maar dat werkt alleen wanneer de plaatjes op je eigen server staan én ze via relatief path aangesproken worden, dat zal op een forum dus amper voorkomen.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zondag 13 januari 2002 21:44 schreef OlafvdSpek het volgende:
Dit wordt toch server side uitgevoerd? Dus 'downloaden' zou snel zijn. Maar GetImageSize() zou het plaatje toch ook direct kunnen openen?
bwahaha, weet je hoeveel brakke servers er zijn?

ik noem f2s, ik noem mensen die af hun basic adsl hosten, etc. etc...

Je zou dit wel kunnen doen dmv. een socket openen, die een timeout van +/- 2 sec. geven => lukt dit niet, dan lekker laten zitten. En dat dan bij invoer van het bericht, en niet realtime...

Maar het blijft een nep-oplossing...

Klaar voor een nieuwe uitdaging.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik bedoelde eigenlijk dat het alleen lokale plaatjes waren, maar dat is dus inderdaad niet zo.
Pagina: 1