Ví dụ đồ họa php

Comment to: Sohel Taslim [03-Aug-2007 06:19]

Thanks for the function which I have modified a bit. In the new version the lines have equal space between them [the g's in your example create bigger space between the lines] - set by the parameter '$Leading'.

I have used the for-loop for better performance and slimmed the rest a little  :]

    /**
     * @name                    : makeImageF
     *
     * Function for create image from text with selected font. Justify text in image [0-Left, 1-Right, 2-Center].
     *
     * @param String $text     : String to convert into the Image.
     * @param String $font     : Font name of the text. Kip font file in same folder.
     * @param int    $Justify  : Justify text in image [0-Left, 1-Right, 2-Center].
     * @param int    $Leading  : Space between lines.
     * @param int    $W        : Width of the Image.
     * @param int    $H        : Hight of the Image.
     * @param int    $X        : x-coordinate of the text into the image.
     * @param int    $Y        : y-coordinate of the text into the image.
     * @param int    $fsize    : Font size of text.
     * @param array  $color    : RGB color array for text color.
     * @param array  $bgcolor  : RGB color array for background.
     *
     */
    function imagettfJustifytext[$text, $font="CENTURY.TTF", $Justify=2, $Leading=0, $W=0, $H=0, $X=0, $Y=0, $fsize=12, $color=array[0x0,0x0,0x0], $bgcolor=array[0xFF,0xFF,0xFF]]{

        $angle = 0;
        $_bx = imageTTFBbox[$fsize,0,$font,$text];
        $s = split["[\n]+", $text];  // Array of lines
        $nL = count[$s];  // Number of lines
        $W = [$W==0]?abs[$_bx[2]-$_bx[0]]:$W;    // If Width not initialized by programmer then it will detect and assign perfect width.
        $H = [$H==0]?abs[$_bx[5]-$_bx[3]]+[$nL>1?[$nL*$Leading]:0]:$H;    // If Height not initialized by programmer then it will detect and assign perfect height.

        $im = @imagecreate[$W, $H]
            or die["Cannot Initialize new GD image stream"];

        $background_color = imagecolorallocate[$im, $bgcolor[0], $bgcolor[1], $bgcolor[2]];  // RGB color background.
        $text_color = imagecolorallocate[$im, $color[0], $color[1], $color[2]]; // RGB color text.

        if [$Justify == 0]{ //Justify Left
            imagettftext[$im, $fsize, $angle, $X, $fsize, $text_color, $font, $text];
        } else {
            // Create alpha-nummeric string with all international characters - both upper- and lowercase
            $alpha = range["a", "z"];
            $alpha = $alpha.strtoupper[$alpha].range[0, 9];
            // Use the string to determine the height of a line
            $_b = imageTTFBbox[$fsize,0,$font,$alpha];
            $_H = abs[$_b[5]-$_b[3]];
            $__H=0;
            for [$i=0; $i

1] If you want to add files to a ZIP archive but you don't know if the ZiP file exists or not, you MUST check: this changes the way you open it !.
2] you can not append multiple flags, can use only one [or none].

If the zip does not exists, open it with:
$ziph->open[$archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE]
[or a different compression method]

If the zip already exists, open it with:
$ziph->open[$archiveFile]
or
$ziph->open[$archiveFile, ZIPARCHIVE::CHECKCONS]

Example: make backup files every hour and ZIP them all in a daily ZIP archive, so you want to get only one ZIP per day, each ZIP containing 24 files:
  function archivebackup[$archiveFile, $file, &$errMsg]
  {
    $ziph = new ZipArchive[];
    if[file_exists[$archiveFile]]
    {
      if[$ziph->open[$archiveFile, ZIPARCHIVE::CHECKCONS] !== TRUE]
      {
        $errMsg = "Unable to Open $archiveFile";
        return 1;
      }
    }
    else
    {
      if[$ziph->open[$archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE] !== TRUE]
      {
        $errMsg = "Could not Create $archiveFile";
        return 1;
      }
    }
    if[!$ziph->addFile[$file]]
    {
      $errMsg = "error archiving $file in $archiveFile";
      return 2;
    }
    $ziph->close[];

    return 0;
  }
?>

Chủ Đề