Ръчно оразмеряване на снимка...

SLADE

Registered
Здравейте, колеги. Някой знае ли как става оразмеряването на снимка - ръчно или по някакъв начин автоматично. Ето Ви пример:

Пример 1: http://news.zapernik.com/333691.html
Пример 2: http://news.zapernik.com/333134.html
Пример 3: http://news.zapernik.com/333629.html

В зависимост от снимката, текста излиза така, че да няма размествания. Примерно на последния пример е голяма снимката и текста излиза отдолу.
Как става този номер с това оразмеряване?

P. S Обмислям го някак под ъплоуд формата за снимката да има поле в което аз да напиша размерите, като например 150x150px или 150x150 или нещо подобно и това да се записва в базата данни, но не знам как това поле ще накара снимката да е оразмерена според моя размер, който съм задал в полето...
Надявам се някой да има яснота за това как може да стане и да ми помогне да го направя. Благодаря предварително!
 
Това за текста става с getimagesize и ако width>height текста да излиза под нея. Ако height>width текста да излиза до нея.

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

Това е един код който аз ползвам:



Това са функции от GD libary, от PHP.

PHP:
list($width,$height)=getimagesize($uploadedfile);

if($width>$height){

$newwidth=500;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,
 $width,$height);

}

if($height>$width) {
$newwidth=350;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,
 $width,$height);
}

if($height==$width) {
$newwidth=450;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,
$width,$height);
}



//Записването на снимки


$filename = "files/".$_FILES['file']['name']; //пътя където ще се запише снимката

imagejpeg($tmp,$filename,100);


Сега това да ти изрязва части от снимките става като задаваш offset на вече създадена снимка с функцията която е написахме горе:


PHP:
imagejpeg($tmp,$filename,100);

list($current_width, $current_height) = getimagesize($filename);

if($current_width>$current_height) {

$tmp=imagecreatetruecolor(80, 90);

$current_image = imagecreatefromjpeg($filename);

imagecopy($tmp, $current_image, 0, 0, 40, 0, 80, 90);
imagejpeg($tmp, $filename, 100);

}


Сега задаването на offset се намира в imagecopy. Това "40" където го виждаш е offset.

http://php.net/manual/en/function.imagecopy.php


---------------------


Ако искаш по-подробно за тазе функции може да намериш ето тук:

http://www.php.net/manual/en/ref.image.php
 

Back
Горе