WebsiteBaker Support (2.12.x) > Help en ondersteuning (dutch)

getimagesize() werkt niet

(1/1)

chairman:
Hallo mensen,

Al een paar avonden ben ik aan het prutsen met onderstaande code...

Werking van het script   Althans... bedoelde werking...
Met dit script (dit is een gedeelte ervan) kan ik een overzicht maken van onderliggende pagina's. Het script haalt de eerste img-tag uit de content van onderliggende pagina en zet de src-element in een variabele. Hiermee creëren we een thumbnail op de huidige pagina in een unordered list.

Om de afbeelding in verhouding te houden wordt gekeken welke maten de afbeelding heeft en wordt berekend wat deze moeten worden voor de thumbnail.


--- Code: ---
//if user is allowed to see the page's content, then we retrieve it:
$page_source = '';
if(($agg_settings['aggregate_hidden'] && ($item['visibility'] == 'hidden')) || $wb->show_page($item)){
$query = "SELECT * FROM ".TABLE_PREFIX."sections WHERE page_id = '" . $item['page_id'] . "' ORDER BY block, position ASC";
$sections_query = $database->query($query);
if($sections_query->numRows() >= 1) {
while($section = $sections_query->fetchRow()) {
$section_id = $section['section_id'];
$module = $section['module'];
if($section['module'] != 'enhanced_aggregator'){
ob_start();
include(WB_PATH.'/modules/'.$module.'/view.php');
$page_source .= ob_get_contents();
ob_end_clean();
}
}
}
}

$img_tag = get_first_element($page_source,'img');

// Filter de img-tag uit $img_tag
$find = '/<img.*src="(.*?)"/';
$match = preg_match($find, $img_tag, $img );

if ( $match ) {

// Afmetingen van het origineel ophalen.
list($width_orig, $height_orig) = getimagesize($img[1]);

// Check hoe groot de maximale maat mag zijn
$maxsize = $agg_settings['thumb_size'];

// Bepalen van de nieuwe afmetingen:
if($width_orig < $maxsize && $height_orig < $maxsize)
{
// -> breedte en hoogte < maxsize: niet resizen, originele afmetingen behouden.
$height = $height_orig;
$width = $width_orig;
}
elseif($width_orig < $height_orig)
{
// -> breedte < hoogte: de hoogte is de maxsize, de breedte naar verhouding aanpassen.
$height = $maxsize;
$width = round(($maxsize / $height_orig) * $width_orig);
}
else
{
// -> breedte > hoogte: de breedte is de maxsize, de hoogte naar verhouding aanpassen.
$height = round(($maxsize / $width_orig) * $height_orig);
$width = $maxsize;
}

$thumb = "<img src=\"" . $img[1] . "\" height=\"" . $height . "\" width=\"" . $width . "\" />";
// $thumb = "<img src=\"" . $img[1] . "\" height=\"" . $height . "\" width=\"" . $width . "\" />";

} else {
$thumb = "<h5>Geen afbeelding beschikbaar</h5>";
}

--- End code ---

En dan gaat het met name om dit gedeelte:


--- Code: ---// Filter de img-tag uit $img_tag
$find = '/<img.*src="(.*?)"/';
$match = preg_match($find, $img_tag, $img );

if ( $match ) {

// Afmetingen van het origineel ophalen.
list($width_orig, $height_orig) = getimagesize($img[1]);

--- End code ---

Na de update naar 2.12.x werkte het gedeelte niet meer waar de afmetingen wordt opgehaald d.m.v. getimagesize().

Het vreemde is, als ik de locatie van de afbeelding handmatig in een string zet, bijvoorbeeld :

--- Code: ---var_dump(getimagesize('http://localhost/fjorkahoeve/media/Fjorden/Bjorna/Bjorna.33.06.jpg'));
--- End code ---
werkt het wel, en krijg ik hiervan netjes de waardes terug, maar zo:

--- Code: ---var_dump(getimagesize('$img[1]'));
--- End code ---
werkt het niet.

Als ik op mijn wampserver test met onderstaande code werkt alles prima, maar in de echte pagina, waar die het móet doen, daar werkt het niet...


--- Code: ---<?php

$img_tag = '<img src="http://localhost/fjorkahoeve/media/Fjorden/Bjorna/Bjorna.33.06.jpg" "="';

// Filter de img-tag uit $img_tag
$find = '/<img.*src="(.*?)"/';
$match = preg_match($find, $img_tag, $img );

var_dump($img[1]);

echo "<br />";

var_dump(getimagesize($img[1]));

?>
--- End code ---

Ten einde raad vraag ik om jullie hulp, wat mis ik of zie ik over het hoofd?

LudwigSt:
Probeer het met
--- Code: ---$find = '/<img.*src="(.*?)"/';
$match = preg_match($find, $img_tag, $img );
$info = [];
$size = getimagesize($img[1], $info);
echo $size[0];
echo "<br>";
echo $size[1];

--- End code ---

chairman:
Bedankt voor je reactie. Ik ga het proberen.   (Y)

chairman:
Helaas geen verschil...

Ook als ik het volgende doe,

--- Code: ---<?php
    var_dump($size);
?>

--- End code ---

krijg ik bool(false)

chairman:
getimagesize werkt toch wel... In de variable stond een 'andere' link. Door de zelfde link in de variabele als de zelf-ingevulde link te gebruiken kwam ik er achter dat er een andere waarde in de variabele stond - string(62) - terwijl de zelf ingevulde string(55) bevat.

Omgezet van en naar HEX kwam ik er achter. Nu met een 'work-around' alles weer werkend gekregen.

Navigation

[0] Message Index

Go to full version