Autor Zpráva
dan55
Profil
Ahoj,
chci se zeptat, jestli už někdo v PHP řešil takový ořez obrázku a jestli případně nemáte odkaz ke stažení scriptu. Nechce se mi s tím zdržovat :)
Mělo by to vypadat asi tak: http://screenup.eu/?qGOdxr
Tzn. z obdélníkového udělat čtvercový bez zdeformování.
suvel
Profil
Mělo by to jít pomocí imagecrop
peta
Profil
Urcite by to slo napsat elegantneji, ale "Nechce se mi s tím zdržovat" :)
// vypocita oriznuti
     function createCropArray($_width,$_height,$_factor,$_position = -1)
    {
    $crop = array(0,0,$_width,$_height);    //left,top,width,height
    if ($_position!=0)
        {
        if (($_width/$_height)<$_factor)    {$crop[3] = floor($_width/$_factor);}    // prizpusobi w a h podle faktoru
        if (($_width/$_height)>$_factor)    {$crop[2] = floor($_height*$_factor);}
        $dw = $_width -$crop[2];
        $dh = $_height-$crop[3];
        switch ($_position)
            {
        //    case 0: $crop = array(0,0,$_width,$_height); break;    // none
            case 1: break;                        // left top
            case 2: $crop[0] = $dw; break;                // right top
            case 3: $crop[0] = $dw;    $crop[1] = $dh; break;    // right bottom
            case 4: $crop[1] = $dh; break;                // left bottom
            case 5: $crop[1] = $dh>>1; break;            // left center
            case 6: $crop[0] = $dw>>1; break;            // center top
            case 7: $crop[0] = $dw;    $crop[1] = $dh>>1; break;    // right center
            case 8: $crop[0] = $dw>>1; $crop[1] = $dh; break;    // center bottom
            default:$crop[0] = $dw>>1; $crop[1] = $dh>>1; break;    // center center ($_position=-1)
            }
        }
    return $crop;
    }
...
$_crop = createCropArray(300,200,4/3,4); // sirka, vyska, pomer stran, poloha vyrezu
            $fce_resize2($image2, $image1,
             $_resize[0],$_resize[1], $_crop[0],$_crop[1],
             $_resize[2],$_resize[3], $_crop[2],$_crop[3]);
// $fce_resize2 je tusi ImageCreateTruecolor nebo ImageCreate nebo ImageCopyResampled a nebo ImageCopyResized
Kcko
Profil
dan55:
Použil bych hotovou komponentu, která v základu umí víc než požaduješ. http://phpthumb.gxdlabs.com/
dan55
Profil
Kcko:
Díky, tato funkce je přesně to, co jsem potřeboval :)
require_once './ThumbLib.inc.php';
$thumb = PhpThumbFactory::create('boty.jpg');
$thumb->adaptiveResize(200, 200);
$thumb->show();
peta:
Díky, moc se mi to nedařilo rozchodit, tak jsem použil tu knihovnu celou :)

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: