Afbeelding alleen resizen als te groot is
De volgende dingen heb ik al geprobeerd:
* Werkt niet want als je een afbeelding hebt die kleiner is dan 500px word die te groot en uitgerekt.
* Werkt alleen in FF, en aangezien IE nog het meest gebruik word moet het daar ook voor werken.
Gevonden op Gigadesign:
Code (php)
1
2
3
2
3
max-width: 400px;
width: expression(document.geElementById('container').style.
width > 400 ? "400px": "auto" );
width: expression(document.geElementById('container').style.
width > 400 ? "400px": "auto" );
*Krijg ik niet werkend...
Iemand nog een andere oplossing? Ik zou wel alles kunnen opslaan, maar dan komen al die afbeeldingen op de server, lijkt me wat overbodig als ze op het internet staan. Ik hoopte eigenlijk dat er een CSS manier was. Het gaat hier namelijk om afbeeldingen die door users worden gepost dmv ubb.
Gewijzigd op 01/01/1970 01:00:00 door Raymond ---
Bumpje..
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
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
<?
function avatar($maxw, $maxh, $image, $alt){
$imagesize = getimagesize($image);
$width = $imagesize['0'];
$height = $imagesize['1'];
if($width < $maxw && $height < $maxh){
// Het plaatje heeft een toegestaan formaat (kleiner dan het maximum)
$imgw = $width;
$imgh = $height;
}
if($width == $maxw && $height == $maxh){
// Het plaatje heeft een toegestaan formaat (exact het zelfde formaat als het maximum)
$imgw = $width;
$imgh = $height;
}
if($width > $maxw or $height > $maxh){
// Het plaatje is te groot!
$gf_height = $height / $maxh;
$gf_width = $width / $maxw;
if($gf_width > $gf_height){
$imgw = $width / $gf_width;
$imgh = $height / $gf_width;
}
if($gf_width < $gf_height){
$imgw = $width / $gf_height;
$imgh = $height / $gf_height;
}
if($gf_width == $gf_height){
$imgw = $width / $gf_width;
$imgh = $height / $gf_height;
}
}
echo "<img src='".$image."' alt='".$alt."' height='".$imgh."' width='".$imgw."'>";
}?>
function avatar($maxw, $maxh, $image, $alt){
$imagesize = getimagesize($image);
$width = $imagesize['0'];
$height = $imagesize['1'];
if($width < $maxw && $height < $maxh){
// Het plaatje heeft een toegestaan formaat (kleiner dan het maximum)
$imgw = $width;
$imgh = $height;
}
if($width == $maxw && $height == $maxh){
// Het plaatje heeft een toegestaan formaat (exact het zelfde formaat als het maximum)
$imgw = $width;
$imgh = $height;
}
if($width > $maxw or $height > $maxh){
// Het plaatje is te groot!
$gf_height = $height / $maxh;
$gf_width = $width / $maxw;
if($gf_width > $gf_height){
$imgw = $width / $gf_width;
$imgh = $height / $gf_width;
}
if($gf_width < $gf_height){
$imgw = $width / $gf_height;
$imgh = $height / $gf_height;
}
if($gf_width == $gf_height){
$imgw = $width / $gf_width;
$imgh = $height / $gf_height;
}
}
echo "<img src='".$image."' alt='".$alt."' height='".$imgh."' width='".$imgw."'>";
}?>
Ok, bedankt zoiets zocht ik, ik ga het straks even uitproberen. Het hoefde idd perse met CSS, maar ik had eigenlijk niet aan PHP gedacht...
even voor de vorm, het script zorg voor permanente vervorming....
Het script wat ik zojuist poste verandert het formaat zo nodig in verhouding, en slaat de afbeelding niet op dus de vervorming is niet permanent
Ik heb de functie, maar hij moet uitgevoerd worden samen met preg_replace, dit is de huidige regel:
Code (php)
1
2
3
2
3
<?php
$string = preg_replace('#\[img\](.+?)\[/img\]#si','<a href="\\1" rel="lightbox"><img src="\\1" alt="Afbeelding" /></a>',$string);
?>
$string = preg_replace('#\[img\](.+?)\[/img\]#si','<a href="\\1" rel="lightbox"><img src="\\1" alt="Afbeelding" /></a>',$string);
?>
Het moet iets zoals dit worden:
Code (php)
1
$string = preg_replace('#\[img\](.+?)\[/img\]#si','<a href="\\1" rel="lightbox">'resize_img(500, 500, \\1,"Afbeelding")'</a>',$string);
Ik snap dat dat neit werkt, maar het is wel de bedoeling dat er uitgevoerd zo moeten worden, iemand enig idee hoe ik dat kan oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Raymond ---
bump..