Jump to content
php.lv forumi

Resize Image


Morphius

Recommended Posts

Ir nepieciešamība izveidot no bildes mazu pagaidu bildīti. Ir atrasti skripi, kur padodot parametru ka bilde jāsamazina līdz 150px, tad bilžukam garākā mala tiek samazināta līdz 150px un īsākā mala samazināta procentuāli, lai nesabojātu proporcijas, respektīvi mazāk nekā 150px.

Kāds ir risinājums, kad no jebkādas bildes tiek izveidots kvadrāts, neizstiepjot un nesaspiežot attēlu. Fiška it kā skaidra, ja bilde ir piemēram 300x500, tad ņemam garāko malu - īsākā mala / 2 un esošo skaitli, 100px, nogriežam no abiem garākās malas galiem. Tikai kā tas izskatās php funkciju veidā?

Link to comment
Share on other sites

imagecopyresampled() - pārējais jau ir matemātika.

 

Iravēju piemēru no paveca koda:

function crop($src, $dst, $width, $height){
if(!$src = imagecreatefromstring(file_get_contents($src))) return false;
$srcw = imagesx($src);
$srch = imagesy($src);
$tmp = imagecreatetruecolor($width, $height); // uztaisam attēlu
imagefilledrectangle($tmp, 0, 0, $width, $height, imagecolorallocate($tmp, 255, 255, 255)); // balts fons
// sākās visa rēķināšanas daļa
if($srcw <= $width && ($srch <= $height || $height == 0)){
	$nw = $srcw;
	$nh = $srch;
}else{
	$ratio = $srcw/$srch;
	if($height > 0 && $width/$height > $ratio){
		$nw = $height*$ratio;
		$nh = $height;
	}else{
		$nw = $width;
		$nh = $width/$ratio;
	}
}
imagecopyresampled($tmp, $src, (($width/2)-($nw/2)), (($height/2)-($nh/2)), 0, 0, $nw, $nh, $srcw, $srch); // resize
if(!imagejpeg($tmp, $dst, 100)) return false;
imagedestroy($tmp);
return true;
}

Edited by marcis
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...