Autor Zpráva
Brumisek
Profil
Mám nový, poměrně zajímavý a rozsáhlý web a rád bych uživatelům umožnil konfortu automatického přiostření obrázku, podobně, jako je tomu na Flickr.com.

Když uživatel nahrává obrázek, tak se v PHP přeformátuje na 3 velikosti (klasický imageresmaple, jak už tu několikrát problěhlo), a po ukončení tohoto procesu bych rád výsledný soubory ještě přiostřil. Přes PHP to prý nejde, tak jsem nainstaloval Imagemagic. Ale vůbec si s tím nevím rady jak to udělat. Máte někdo zkušenost??

Tady je moje funkce, která z nahraného obrázku v PHP dělá 3 formáty. Co a kde pak zadat, aby soubory přiostřil?




// function for resample image

function createthumb($name,$filename,$new_w,$new_h,$delam_orez)
{

$system=explode('.',$name);
$src_img=imagecreatefromjpeg($name);
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
$thumb_w=$new_w;
$thumb_h=$new_h;
$dst_img=imagecreatetruecolor($thumb_w,$thumb_h);
$bila = imagecolorallocate($dst_img,255,255,255);
imagefilledrectangle($dst_img,0,0,$thumb_w,$thumb_h,$bila);

if ($old_x < $old_y){
$start_x= round(($thumb_w-(($thumb_h/$old_y)*$old_x))/2);
$end_x= round(($thumb_h/$old_y)*$old_x);
$start_y= 0;
$end_y= $thumb_h;
}

if ($old_x > $old_y){
$start_x= 0;
$end_x= $thumb_w;
$start_y= round(($thumb_h-(($thumb_w/$old_x)*$old_y))/2);;
$end_y= round(($thumb_w/$old_x)*$old_y);
}

if ($old_x == $old_y){
$start_x= 0;
$end_x= $thumb_w;
$start_y= 0;
$end_y= $thumb_h;
}

imagecopyresampled($dst_img,$src_img,$start_x,$start_y,0,0,$end_x,$end  _y,$old_x,$old_y);


if (preg_match("/png/",$system[1])){
imagepng($dst_img,$filename);
}else{
imagejpeg($dst_img,$filename);
}

imagedestroy($dst_img);
imagedestroy($src_img);

}


// create 3 versions of image

createthumb($file_name,$file_name_s,70, 70,2);
createthumb($file_name,$file_name_m,200, 200,2);
createthumb($file_name,$file_name_b,500,500,0);


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
karbon
Profil *
Leo tady jednou psal odkaz na velice zajímavý ostřící algoritmus.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: