Author Topic: getimagesize() werkt niet  (Read 559 times)

Offline chairman

  • Posts: 26
getimagesize() werkt niet
« on: May 22, 2020, 11:11:40 PM »
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: [Select]

//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>";
}

En dan gaat het met name om dit gedeelte:

Code: [Select]
// 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]);

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: [Select]
var_dump(getimagesize('http://localhost/fjorkahoeve/media/Fjorden/Bjorna/Bjorna.33.06.jpg'));werkt het wel, en krijg ik hiervan netjes de waardes terug, maar zo:
Code: [Select]
var_dump(getimagesize('$img[1]'));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: [Select]
<?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]));

?>

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

« Last Edit: May 22, 2020, 11:25:28 PM by chairman »

Offline LudwigSt

  • Posts: 291
Re: getimagesize() werkt niet
« Reply #1 on: May 23, 2020, 03:27:14 PM »
Probeer het met
Code: [Select]
$find = '/<img.*src="(.*?)"/';
$match = preg_match($find, $img_tag, $img );
$info = [];
$size = getimagesize($img[1], $info);
echo $size[0];
echo "<br>";
echo $size[1];
Wissen ist Macht - aber nix wissen macht auch nix.

Offline chairman

  • Posts: 26
Re: getimagesize() werkt niet
« Reply #2 on: May 23, 2020, 04:13:24 PM »
Bedankt voor je reactie. Ik ga het proberen.   (Y)

Offline chairman

  • Posts: 26
Re: getimagesize() werkt niet
« Reply #3 on: May 23, 2020, 07:32:03 PM »
Helaas geen verschil...

Ook als ik het volgende doe,
Code: [Select]
<?php
    var_dump
($size);
?>


krijg ik bool(false)
« Last Edit: May 23, 2020, 07:40:48 PM by chairman »

Offline chairman

  • Posts: 26
Re: getimagesize() werkt niet
« Reply #4 on: May 23, 2020, 10:39:48 PM »
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.

 

postern-length