예제 #1
0
파일: Render.php 프로젝트: h3rb/page
function fl_text_render($_file, $id, $text, $fontname, $fontsize, $color = "#000000", $out_image_file_type = "png")
{
    $font = locate_font($fontname);
    if ($font === false) {
        fllog('fl_text_render: font `' . $fontname . '` not found at `' . flvault . $fontname . '`');
        return false;
    }
    $render = false;
    $out_image_file_type = strtolower($out_image_file_type);
    $cachefile = flcache . $id . '.' . $out_image_file_type;
    if ($_file !== false) {
        if (file1_is_older($cachefile, $_file)) {
            $render = true;
        }
    } else {
        $render = true;
    }
    if ($render === true) {
        try {
            $draw = new ImagickDraw();
            $draw->setFont($font);
            $draw->setFontSize(intval($fontsize));
            $draw->setGravity(Imagick::GRAVITY_CENTER);
            $draw->setFillColor($color);
            $canvas = new Imagick();
            $m = $canvas->queryFontMetrics($draw, htmlspecialchars_decode($text));
            $canvas->newImage($m['textWidth'], $m['textHeight'], "transparent", $out_image_file_type);
            $canvas->annotateImage($draw, 0, 0, 0, $text);
            $canvas->setImageFormat(strtoupper($out_image_file_type));
            $canvas->writeImage($cachefile);
            fllog('Writing to: ' . $cachefile);
            $canvas->clear();
            $canvas->destroy();
            $draw->clear();
            $draw->destroy();
        } catch (Exception $e) {
            fllog('fl_text_render() Error: ', $e->getMessage());
            return false;
        }
    }
    return $cachefile;
}
예제 #2
0
파일: FontSpriter.php 프로젝트: h3rb/page
function fl_sprite($_file, $sheet_id, $sprite_id, $tag = 'div', $output_filetype = "png")
{
    $sheet = flcache . $sheet_id . '.' . $output_filetype;
    $sheetfile = fl_get_sheet_filename($sheet_id);
    $descriptions = fl_load_sheet($sheet_id);
    if (count($descriptions) == 0) {
        fllog('fl_sprite: no descriptions (' . flcache . $sheet_id . '.txt' . ',' . $sheet . ',' . $sheetfile . ') available for sheet_id `' . $sheet_id . '`, so nothing done FILE: `' . $_file . '`');
        fl_regenerate_sprite_cache($sheet_id, $descriptions, $output_filetype);
        return '<!-- FontLawyer: sprite description not yet available, place in cache dir as ' . $sheet_id . '.txt; see docs for details on how to make this -->' . PHP_EOL;
    }
    $render = false;
    $out_image_file_type = strtolower($out_image_file_type);
    $cachefile = flcache . $sprite_id . '.' . $out_image_file_type;
    if ($_file !== false) {
        if ($_file === true) {
            $render = true;
        } else {
            if (file1_is_older($cachefile, $_file) && file1_is_older($sheetfile, $_file) && file1_is_older(fl_get_sheet_description_filename($sheet_id), $_file)) {
                $render = false;
            } else {
                $render = true;
            }
        }
    } else {
        $render = true;
    }
    if ($render === true) {
        fl_regenerate_sprite_cache($sheet_id, $descriptions, $output_filetype);
    }
    return '<' . $tag . ' class="' . $sheet_id . '-' . $sprite_id . '"></' . $tag . '>' . PHP_EOL;
}