[php] ubb met resize image

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een stukje ubb als volgt:

PHP:
1
2
3
4
if (stristr($message, 'jpg[/img]') || stristr($message, 'jpeg[/img]') || stristr($message, 'gif[/img]')) {
$patterns[] = "#\\[img\]([^\\[]*)\\[/img\]#si";
$replacements[] = '[img]"\1"[/img]';
}



Dat leidt er dus toe dat je opmaak verneukt wordt als mensen te grote plaatjes plaatsen, dus wil ik de plaatjes resizen. Ik heb al een functie die plaatjes gere-sized teruggeeft:


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
function maakthumb($image, $max) {

list($width, $height, $type, $attr) = getimagesize($image);

if($width <= $max AND $height <= $max) {
$width = $width;
$height = $height;
}
else
{
if      ($width > $height) {
$quotient   = $width/$max;
$width      = $max;
$height     = $height/$quotient;
}
elseif  ($width < $height) {
$quotient   = $height/$max;
$height     = $max;
$width      = $width/$quotient;
}
elseif  ($width == $height) {
$height     = $max;
$width      = $max;
}
}
return $size = "[img]'$image'[/img]";
}



Ik heb al een aantal aanpassingen in de bovenste ubb code gedaan om voor de replacement gebruik te maken van de functie "maakthumb", maar het lukt me niet. Kan iemand ff helpen? Dit is wat ik geprobeerd heb:

PHP:
1
2
3
4
if (stristr($message, 'jpg[/img]') || stristr($message, 'jpeg[/img]') || stristr($message, 'gif[/img]')) {
$patterns[] = "#\\[img\]([^\\[]*)\\[/img\]#si";
$replacements[] = maakthumb2('\1', 300);
}


Dat '\1' pikt ie niet... ("\1" en '\\1' en "\\1" ook niet) Ik heb al wat rondgesnuffeld hier door de verschillende posts over ubb maar kom het niet tegen.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
$1 ?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ik denk dat het niet handig is om plaatjes door je server te laten downloaden. Op dit moment moet jou server eerst alle plaatjes (helemaal!) downloaden voordat het de uiteindelijke pagina kan laten zien. Naast dat dit er voor zorgt dat het maken van de pagina erg wordt vertraagd is dit natuurlijk ook een aanslag op je bandbreedte. Het lijkt me handiger om dit dmv een javascriptje clientside op te lossen. Op Fok wordt dit bijvoorbeeld gebruikt.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja maar eerlijk gezegd hoef ik me daar niet zo'n zorgen over te maken omdat het een site betreft voor een beperkt groepje vrienden dus het zal zowiezo niet uit de klauwen lopen. Daarnaast zijn het vaak foto's die op dezelfde server staan, dus met een beetje reggen denk ik dat ik de meeste foto;s toch wel van de lokale schijf af kan halen...

$1? ehhh :/

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

ik denk dat je eens naar de e-modifier moet kijken voor je regexp, of naar preg_replace_callback

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja sorry maar dat gaat me even boven mijn pet. Bovenstaande heb ik ook maar een beetje bijelkaar gesprokkeld namelijk... Kan je misschien een voorbeeldje geven?

Acties:
  • 0 Henk 'm!

  • jan-marten
  • Registratie: September 2000
  • Laatst online: 16-09 14:45
Hm, ik gebruik dit trouwens:
PHP:
1
$message = preg_replace('/\\[thumb\]([^[]*)\\[\/thumb\]/ie'  , 'thumbnailer("\1")' , $message);


thumbnailer($image) vraagt de sizes op van het plaatje en maakt hier een HTML-tag van.

edit, oja, die modifiers. /i staat voor case-insensitive (?) en e voor dat ie thumbnailer aanziet als een PHP functie (met "\1" als parameter in dit geval)

[ Voor 32% gewijzigd door jan-marten op 26-11-2003 23:43 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

Verwijderd schreef op 26 november 2003 @ 23:30:
ja sorry maar dat gaat me even boven mijn pet. Bovenstaande heb ik ook maar een beetje bijelkaar gesprokkeld namelijk... Kan je misschien een voorbeeldje geven?
nou goed dan, omdat je het zo vriendelijk vraagt :P

PHP:
1
2
3
$pattern = '/\\[img\](.*?)\\[\/img\]/ise';
$replace = 'maakthumb2(\'$1\',300)';
$message = preg_replace($pattern, $replace, $message);

Intentionally left blank

Pagina: 1