Проверка за размер

GameZone

Registered
Как мога да зема размера на това:
Код:
$text = preg_replace("/\[img\](.+?)\[\/img\]/s", '<img src="$1">',$text);
И да проверя да ли е повече от 500х150 и ако е повече за извежда Error ако не е да си правя извеждането
 
Код:
<?php
list($width, $height, $type, $attr) = @getimagesize("$1");
if("$width" > "500") echo "Error";
elseif("$height" > "150") echo "Error";
else echo "<img src=$1>";
?>
 
А сложил ли си преди него тоя код, който ти си написал ?
Да, действа, независимо дали е на твой или чужд хост
 
Сложил съм кода само за bbcode извежданията и под този на проверката за снимката сложих твоя
 
Код:
$text = preg_replace_callback("/\[img\](.+?)\[\/img\]/s",create_function('$matches','$size = getimagesize($matches[1]);if($size[0]<=500 && $size[1]<=150) { return "<img src=\"$matches[1]\">"; } else { return "error"; }'),$text);
Неможеш да ползваш функции в preg_replace затова я има функцията preg_replace_callback
 
marian каза:
Код:
$text = preg_replace_callback("/\[img\](.+?)\[\/img\]/s",create_function('$matches','$size = getimagesize($matches[1]);if($size[0]<=500 && $size[1]<=150) { return "<img src="$matches[1]">"; } else { return "error"; }'),$text);
Неможеш да ползваш функции в preg_replace затова я има функцията preg_replace_callback
Дава "error" според мене грешката е при "if" но немога да я оправя нещо...
 
GameZone каза:
marian каза:
Код:
$text = preg_replace_callback("/\[img\](.+?)\[\/img\]/s",create_function('$matches','$size = getimagesize($matches[1]);if($size[0]<=500 && $size[1]<=150) { return "<img src="$matches[1]">"; } else { return "error"; }'),$text);
Неможеш да ползваш функции в preg_replace затова я има функцията preg_replace_callback
Дава "error" според мене грешката е при "if" но немога да я оправя нещо...

Каква по точно грешка ти дава :?
 
Грешка! Мнението ми не отговаря на критериите на автора! Извинявам се за неудобството!
 
BoBySS каза:
Код:
<?php
$max_height = "800"; // В пиксели
$max_width = "800"; // В пиксели

// Проверяваме Височината и Широчината на файла (снимката)
if ($max_width && $max_height) {
list($width, $height, $type, $w) =
getimagesize($_FILES['file']['tmp_name']);
if($width > $max_width || $height > $max_height)
{
print "Височината и/или широчината на файла е прекалено голяма!";
exit;
}
}
?>

Прочети първо какво искам и тогава пиши ;)
 
GameZone каза:
Дава "error" според мене грешката е при "if" но немога да я оправя нещо...
Ми да пише "error" защото картинката е по-голяма от 500 на 150
Ако сложиш картинка с по-малък размер ще ти върне картинката иначе "error"
 
А как ще стане така че когато картинката не е 500/150 да я смаля на 500 дължитена и да определя височината така че да не се разваля :)
 
За сега нямам идея колко процента от дължината трябва да е ширината за да не се разваля качеството (много съм зле с математиката)
Ако измисля нещо ще пиша
 
marian каза:
За сега нямам идея колко процента от дължината трябва да е ширината за да не се разваля качеството (много съм зле с математиката)
Ако измисля нещо ще пиша

Ами аз мисля, че ще се сетя след малко така, че ако може виж темата след 5 минути ще съм едитнал поста :)

if($height>=HEIGHT){//ако височината е по-голяма или равна на HEIGHT
$new_height= HEIGHT;//задаване на нова височина
$new_width= (int) ($width*$new_height)/$height;//задаване на нова ширина

Това?
 
Колкото по-голяма е дължината толкова по-малка е ширината
Примерно при 1024x768 новата ширина става 200 а при 1280x1024 ширината става 187.5 по-зле става при 300x421 тогата ширината става 108 и стават с много лошо качество но ако искаш ще направя скрипта
 
marian каза:
Колкото по-голяма е дължината толкова по-малка е ширината
Примерно при 1024x768 новата ширина става 200 а при 1280x1024 ширината става 187.5 по-зле става при 300x421 тогата ширината става 108 и стават с много лошо качество но ако искаш ще направя скрипта

Ем ако може го добави към горкия код :) С хубаво качество да е, ако може :)
 
Код:
$text = preg_replace_callback("/\[img\](.+?)\[\/img\]/s",create_function('$matches','$size = getimagesize($matches[1]);if ($size[0]>=500) {$size[0] = 500;} if ($size[1]>=150) {$size[1] = round((int)($size[0]*150)/$size[1],2);} return "<img src=\"$matches[1]\" width=\"$size[0]\" height=\"$size[1]\">";'),$text);
По добре от това неможе все пак дължината е почти 4 пъти по голяма от ширината
 

Back
Горе