Bei der Verarbeitung von Bildern in PHP ist ImageFontwidth () eine gemeinsame Funktion, um die Breite der integrierten Schriftzeichen zu erhalten. Es ist sehr wichtig, den Textinhalt zu positionieren, wenn Textbilder dynamisch generiert werden. Da sich die Anzeigegeräte jedoch zu hoher Auflösung (HDPI) entwickeln, haben viele Entwickler begonnen, darauf zu achten, ob ImageFontwidth () sich genau an hochauflösende Bilder anpassen kann.
In diesem Artikel werden Sie in die tiefere Diskussion über die Leistung von ImageFontwidth () in hochauflösenden Bildern führen und Ihnen helfen, die Grenzen und Best Practices zu verstehen.
Die ImageFontwidth () -Funktion gibt die Breite eines Zeichens in einer bestimmten integrierten Schriftart in Pixel zurück. Beispiele für die Nutzung sind wie folgt:
<?php
$font = 5; // PHPEingebaute Schriftnummer,Umfang1-5
$width = imagefontwidth($font);
echo "Die Schriftbreite ist:$width Pixel";
?>
Die hier zurückgegebene Breite basiert auf der Anzahl der Pixel bei Standardauflösung und beinhaltet nicht die tatsächliche physikalische Größe oder Auflösung des Bildes.
Hochauflösende Bilder beziehen sich normalerweise auf Bilder mit höheren Pixeln pro Zoll (PPI), z. B. 300 ppi oder mehr, für Geräte wie Druck- oder Retina -Anzeigen. Hochauflösende Bilder enthalten mehr Pixel mit der gleichen physischen Größe, was zu einer klareren visuellen Ansicht führt.
Beim Erstellen von Bildern in der PHP -GD -Bibliothek sind Pixel jedoch immer noch die kleinste Betriebseinheit, und die Auflösungsinformationen werden normalerweise nicht direkt codiert oder verwendet. PHP GD passt die Schriftbreite nicht automatisch an die hohen PPI -Umgebungen an.
Da ImageFontwidth () eine Breite zurückgibt, die auf einer festgelegten Schriftpixelgröße festgelegt ist, wird nicht automatisch gemäß der Auflösung des Bildes ein- oder ausgeschaltet. Zum Beispiel:
<?php
$font = 3;
$width = imagefontwidth($font);
$img = imagecreatetruecolor(600, 400);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $white);
imagestring($img, $font, 50, 50, "High Definitionstest", $black);
// Schriftart Breite
echo "Charakterbreite:$width Pixel";
// Speichern Sie das Bild
imagepng($img, 'test.png');
imagedestroy($img);
?>
Unabhängig davon, ob Sie das generierte Bild in die HD -Anzeige vergrößern, bleibt der von ImageFontwidth () zurückgegebene Breitenwert immer unverändert. Das heisst:
Wenn Sie Text mit vergrößerter Bildgröße zeichnen, ist die integrierte Schriftgröße weiterhin eine feste Pixelgröße und der Text wird nicht automatisch zu "HD".
Der Charakterbreitenwert stimmt mit den tatsächlichen gerenderten Pixeln überein und kann die Amplifikationsanforderungen von hochauflösenden Anzeigen nicht widerspiegeln.
Verwenden Sie TrueType -Schriftarten und ImagettFtext ()
Im Vergleich zu integrierten Schriftarten unterstützt Imagetettftext () benutzerdefinierte Schriftart Dateien und beliebige Schriftgrößen und kann sich flexibler an verschiedene Auflösungen anpassen:
<?php
$img = imagecreatetruecolor(600, 400);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $white);
$fontFile = 'm66.net/fonts/arial.ttf'; // Benutzerdefinierte Schriftart
$fontSize = 20; // Schriftgröße,Kann gemäß den Anforderungen angepasst werden
imagettftext($img, $fontSize, 0, 50, 100, $black, $fontFile, "High Definitionstest");
// Ein Bild erstellen
imagepng($img, 'test_ttf.png');
imagedestroy($img);
?>
Dynamisch die Textbreite berechnen
Die Funktion ImageettFBBox () gibt das Begrenzungsfeld des angegebenen Textes unter der angegebenen Schriftart und Größe zurück, mit der die Textbreite genau berechnet werden kann:
<?php
$fontFile = 'm66.net/fonts/arial.ttf';
$fontSize = 20;
$text = "High Definitionstest";
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
$textWidth = $bbox[2] - $bbox[0]; // Untere rechte Eckexkoordinieren - Obere linke Eckexkoordinieren
echo "Die Textbreite ist:$textWidth Pixel";
?>
Zeichnen Sie größere Schriftarten in hochauflösenden Bildern
Die Verwendung größerer Schriftgrößen auf hochauflösenden Bildern und Zeichnen gemäß der Anzeigeskalierung kann die Klarheit des Textes sicherstellen.
ImageFontwidth () gibt die Zeichenbreite der integrierten Schrift unter festen Pixeln unabhängig von der Bildauflösung zurück.
In hochauflösenden Bildumgebungen kann ImageFontwidth () die tatsächliche physikalische Breite der Schriftgröße nicht genau widerspiegeln, was zu dem Text führt, der auf hohen Definitionen in proportionaler Weise verschwommen oder falsch erscheinen kann.
Es wird empfohlen, ImagettFtext () und ImagettFBBox () zu verwenden, die Vektorschriften unterstützen, um die Textbreite und -größe dynamisch zu steuern, um sich an hochauflösende Bildanforderungen anzupassen.
Durch die Verwendung von TTF-Schriftarten und Berechnung von Textgrenzen können Sie flexibel hochwertige Textbilder mit hoher Definition zeichnen.