Оразмеряване на снимка

misho

Registered
Как да променя размера на дадена снимка, преди да я кача в сайта? Използвам този upload скрипт. Искам преди да се качи, ако е по-широка или по-висока отдадени стойности да се ограничава до тях.
 
Код:
list($width, $height) = getimagesize("".$image."");
После си правиш проверка:
Код:
if($width > 150 && $height > 150) {
echo '<img src="$image" width="150" height="150">';
} else {
echo '<img src="$image">';
}
 
Не просто да я покажа с новите размери, а... Да речем, че качвам една снимка 1600х1200 пиксела. Искам тя да се запише не по-широка от 800пиксела, следователно трябва файла на сървъра да е 800х600 пиксела. Това как ще стане?
 
Разгледай уроците тук за thumbnail-и , все ще си харесаш някой.
Лично мене ако питаш , поиграй си с този код и се опитай да си го нагодиш.
 
misho каза:
Не просто да я покажа с новите размери, а... Да речем, че качвам една снимка 1600х1200 пиксела. Искам тя да се запише не по-широка от 800пиксела, следователно трябва файла на сървъра да е 800х600 пиксела. Това как ще стане?

Пак по този начин който ти дадох ще стане само че ще проверяваш дали $width i $height са повече от 800 и 600 и да я качва с 800 и 600 ако не да я качва с обикновенните размери :)
 
Знам как да направя проверките, не знам как точно да задам размерите, с които да се запамети. С този ред местя файла от компютъра на хостинга, но къде и как да определя размерите?
Код:
move_uploaded_file($file_tmp,$upload_dir.$new_file_name.$ext)
 
GameZone каза:
Олеее не братле...

list($width, $height) = getimagesize("".$image."");
if($width != 800 && $height != 600) {
echo "<img src="$image" width="800" height="600">";
}
Добре, или толкова не мога да разбера или... :shock:
list($width, $height) = getimagesize("".$image.""); - това взема размерите на снимката $image, като $width и $height са съответно ширина и височина
if($width != 800 && $height != 600){echo "<img src="$image" width="800" height="600">";} - ако ширината или височината е по-голяма от 800 (или 600) показваме снимката с тези размери, което не е много коректно, защото може да я деформира, но както и да е.
НО този код прави едно единствено нещо - показва снимката. Аз ползвам един код от сайта за upload на изображения. Искам следното: когато потребителя посочи даден файл от компютъра си за качване в моя сайт да запиша снимката на хоста с по-малко ширина и височина от оригиналните (ако е много голяма). Правя проверка аз обема на файла (KB), за разширението, но не знам как мога да променя размера в пиксели. Когато снимката се записва на хоста как трябва да посоча новите размери на файла?

По-подробно от това не мога да опиша въпроса си. :lol:
 
Eто ви един клас, който съм писал за оразмеряване на снимки.
http://web-tourist.net/userfiles/1/1280.rar

Примерен код:
Код:
<?php
require_once 'phpstorm/Classes/Image.php';

$img = new Image(...Пътя към картинката...);

if ( $img->IsValidImage() )
{
// картинката е валидна
    
    // Оразмерява я до максимално зададените размери, като запазва пропорциите. Параметрите са ширина, височина и дали да запази снимката, ако е с по-малки от зададените размери.
    $img->ReiszeProportional(1024, 768, true);
    
    // Записва картинката под име test.jpg и формат JPG. Има и трети параметър - качество.
    $img->Save('test.jpg', IMAGETYPE_JPEG);
}
else // невалидна картинка
    echo 'invalid image';
?>

Други функции са: $img->Resize($width, $height) - оразмерява до дадените размери, но не се интересува от запазване на пропорциите.
$img->Scale($times) - свива или уголемява снимката с $times пъти.
$img->Show() - показва снимката, без да я записва.
 
Благодаря много! Но имам проблем със задаването на пътя. Ето какво пиша:
Код:
<?php
require_once 'classes/Image.php';

$img = new Image('http://proba.micobg.net/img/obiavi/5fd83e88308e62ac3f80549f584cae5f.jpg');

if ( $img->IsValidImage() )
{
// картинката е валидна
   
    // Оразмерява я до максимално зададените размери, като запазва пропорциите. Параметрите са ширина, височина и дали да запази снимката, ако е с по-малки от зададените размери.
    $img->ReiszeProportional(400, 300, true);
    $img->Show();
    // Записва картинката под име test.jpg и формат JPG. Има и трети параметър - качество.
    $img->Save('img/obiavi/test.jpg', IMAGETYPE_JPEG);
}
else // невалидна картинка
    echo 'invalid image'; 

?>
Оразмерява я, показва я в новите размери, но не я записва. Или аз бъркам пътя? Пробвъх и с целия адрес, но не се записва никъде (по-точно в img/obiavi/).
 
Пробвах същата картинка от същия линк. Единственото, от което може да е е да нямаш права за запис в папката, в която се опитваш да запишеш картинката. Или пък да не съществува такава папка, обаче се съмнявам да я нямаш.
 
Всъщност се оказа, че се записва, но трябваше да стартирам FTP-то отново, за да се види. :?:
 

Back
Горе