Jump to content
php.lv forumi

Bildes resize (statiski platums un augstums)


senters

Recommended Posts

Man pagaidām ir f-ja priekš attēla samazināšanas, kur skatās platumu (statisks) un augstumu pieskaņo pēc proporcijas rezultātā visi attēli ir ar vienādu platumu bet dažādiem augstumiem.

 

Vajag - lai uploadojot attēlu tas rāda fjā norādīto augstumu / platumu.

 

Manā gadījumā: 90px platumu un 65px augstumu

 

 

Patreizējais kods:

function make_thumb($src, $dest, $desired_width, $desired_height)  
{  
$source_image = imagecreatefromjpeg($src);  
$width = imagesx($source_image);  
$height = imagesy($source_image);    
$newwidth = $desired_width;	 
$newheight = ($height / $width) * $newwidth;
if ($width < $desired_width) { $newwidth = $width; } else { $newwidth = $desired_width; }
if ($height < $desired_height) { $newheight = $height; } else { $newheight = ($height / $width) * $newwidth; }
$tmp = imagecreatetruecolor($newwidth, $newheight);  
imagecopyresized($tmp, $source_image, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);  
imagejpeg($tmp, $dest);
}

Pie inserta:

$image_name=$uid.'-'.time().'1'.'.'.$extension;
$newname="../Images/Events/Small/".$image_name;
$copied = copy($_FILES['att']['tmp_name'], $newname);
make_thumb($newname, $newname, 90, 0); // Platums 90px

 

Ja pamaina 90, 65 nestrādā, tāpat tiek ņemts 90 kā platums un automātiski izrēķina augstumu.

 

Labākais variants būtu, ka paņem vajadzīgo platumu (90px) un augstumu neņem no visa attēla proporcionāli, bet tik daudz lai attēls nesakropļotos.

Edited by senters
Link to comment
Share on other sites

ja norādisi gan platumu, gan augstumu, tad, ja bildei nav pareiza proporcija, tā izstiepsies. Vai nu vajag taisīt cropu(apgriezt), bet tad ir iespēja ka apgraizīs kadu vajadzīgo bildes gabalu(piem. pusi no sejas).

 

Personīgi es taisu resize pēc lielākas vertības, nu tad sanāk bildes vai nu ar 90 platumu, vai nu ar 65 augstumu.

Link to comment
Share on other sites

Lūk tev risinājums:

 

 




function make_thumb($width,$height,$filename,$dfilename){

if(file_exists($filename)){

//Izvelk bildes izmērus

list($width_orig, $height_orig) = getimagesize($filename);
$width_ = $width_orig;
$height_ = $height_orig;
$srcX = 0;
$srcY = 0;

//Vēlamā sīkattēla attiecība

$thumbRatio = $width/$height;

if($width_orig>$height_orig){

//Orģinālās bildes jaunais platums

$width_ = $height_orig*$thumbRatio;
$srcX =($width_orig-$width_)/2;

	//Ja platums neapmierina attiecību, tad orģinālo bildi pielāgo pēc augstuma

	if($srcX<0){
		$srcX = 0;
		$width_ = $width_orig;
		$height_ = $width_orig/$thumbRatio;
		$srcY =($height_orig-$height_)/2;
	}

}else{

//Orģinālās bildes jaunais augstums

$height_ = $width_orig/$thumbRatio;
$srcY =($height_orig-$height_)/2;

	//Ja augstums neapmierina attiecību, tad orģinālo bildi pielāgo pēc platuma	

	if($srcY<0){
		$srcY = 0;
		$height_ = $height_orig;
		$width_ = $height_orig*$thumbRatio;
		$srcX =($width_orig-$width_)/2;
	}

}

//Ieliek bildi jaunajā vietā

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, $srcX, $srcY, $width, $height, $width_, $height_);
imagejpeg($image_p, $dfilename, 100);


//Parbauda vai izdevās
if(file_exists($dfilename)){
return true;
}else{
return false;
}



}else{
return false;
}

}

Link to comment
Share on other sites

Tu tiešām gribi teikt, ka šis skripts man visos gadījumos, neatkarīgi no padotā attēla (ja nav mazāks par 90x65) izveidos statisku izmēru?

 

Kā man tavu fju integrēt iekš mana skripta, varbūt vari plašāk aprakstīt?

Edited by senters
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...