php实现在限定区域里自动调整字体大小的类实例_PHP
本文实例讲述了php实现在限定区域里自动调整字体大小的类。分享给大家供大家参考。具体如下:
这里的php类imagefittext.class.php实现在限定的区域里自动调整字体大小的功能。
<?php // Image Fit Text Class 0.1 by ming0070913 CLASS ImageFitText{ public $font, $fontsize, $width, $height; public $step_wrap, $step_fontsize; public function __construct($font, $step_wrap=1, $step_fontsize=1){ $this->font = $font; $this->step_wrap = $step_wrap>1?$step_wrap:1; $this->step_fontsize = $step_fontsize>1?$step_fontsize:1; } function fit($width, $height, $text, $fontsize, $min_fontsize=5, $min_wraplength=0){ $this->fontsize = & $fontsize; $text_ = $text; while($this->TextHeight($text_)>$height && $fontsize>$min_fontsize) $fontsize -= $this->step_fontsize; while(($this->TextWidth($text_)>$width || $this->TextHeight($text_)>$height) && $fontsize>$min_fontsize){ $fontsize -= $this->step_fontsize; $wraplength = $this->maxLen($text); $text_ = $text; while($this->TextWidth($text_)>$width && $wraplength>=$min_wraplength+$this->step_wrap){ $wraplength -= $this->step_wrap; $text_ = wordwrap($text, $wraplength, "\n", true); //To speed up: if($this->TextHeight($text_)>$height) break; if($wraplength<=$min_wraplength) break; $wraplength_ = $wraplength; $wraplength = ceil($wraplength/($this->TextWidth($text_)/$width)); $wraplength = $wraplength<($min_wraplength+$this->step_wrap)?($min_wraplength+$this->step_wrap):$wraplength; } } $this->width = $this->TextWidth($text_); $this->height = $this->TextHeight($text_); return array("fontsize"=>$fontsize, "text"=>$text_, "width"=>$this->width, "height"=>$this->height); } function maxLen($text){ $lines = explode("\n", str_replace("\r", "", $text)); foreach($lines as $line) $t[] = strlen($line); return max($t); } function TextWidth($text){ $t = imagettfbbox($this->fontsize, 0, $this->font, $text); return $t[2]-$t[0]; } function TextHeight($text){ $t = imagettfbbox($this->fontsize, 0, $this->font, $text); return $t[1]-$t[7]; } } ?>
使用范例如下:
<?php // Image Fit Text Class 0.1 by ming0070913 // Example File include "imagefittext.class.php"; // Settings : // The text $text = "PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. If you are new to PHP and want to get some idea of how it works, try the introductory tutorial. After that, check out the online manual."; // The maximun width $width = 200; // The maximun height $height = 100; // Position of the text and the box $x1 = 50; $y1 = 50; // The starting font size $fontsize = 10; // The minimun font size. The script will stop if it cannot fit the text even with this size. $min_fontsize = 3; // The minimun wrap length for each line. The script will try another font size if it cannot fit the text even with this wrap length. $min_wraplength = 0; // The font $font = "arial.ttf"; // The space between the box and the text. It's independent to the script which can be ignored $padding = 3; // If the script cannot fit the text for certain wrap length, it will try the wrap length again with the reduction in this value. // It reduce the accuracy, but will slightly speed up the process. $step_wrap = 1; // If the script cannot fit the text for certain font size, it will try the the font size again with the reduction in this value. // It reduce the accuracy, but will slightly speed up the process. $step_fontsize = 1; // Create a image $im = @imagecreatetruecolor($width+$x1*2, $height+$y1*2+80) or die('Cannot Initialize new GD image stream'); // Start the timer $time_start = microtime_float(); // The class $imagefittext = new ImageFitText($font, $step_wrap, $step_fontsize); // Fit the text // It returns the result in a array with "fontsize", "text", "width", "height" $fit = $imagefittext->fit($width-$padding*2, $height-$padding*2, $text, $fontsize, $min_fontsize, $min_wraplength); // Stop the timer $time = round(microtime_float()-$time_start, 3); $white = imagecolorallocate($im, 255, 255, 255); // Draw a box imagerectangle($im, $x1, $y1, $x1+$width, $y1+$height, $white); // Write the text +8 because the text will move up originally imagettftext($im, $fit['fontsize'], 0, $x1+$padding, $y1+$padding+8, $white, $font, $fit['text']); // Print some info. about the text imagestring($im, 5, $x1, $y1+$height+30, 'Fontsize : '.$fit['fontsize'], $white); imagestring($im, 5, $x1, $y1+$height+45, 'Text Size : '.$fit['width']."x".$fit['height'], $white); imagestring($im, 5, $x1, $y1+$height+60, 'Box Size : '.($width-$padding*2)."x".($height-$padding*2), $white); imagestring($im, 5, $x1, $y1+$height+75, 'Time used : '.$time.'s', $white); // Print the image header ('Content-Type: image/png'); imagepng($im); imagedestroy($im); function microtime_float(){ // Timer list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } ?>
希望本文所述对大家的php程序设计有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
