2009-04-21 10 views

Antwort

0

This thread schlägt vor, dass Sie Text zu einem Bild schreiben und drehen dann das Bild.

Es scheint mit IE möglich zu sein, aber nicht mit anderen Browsern so könnte es eines dieser kleinen Gewinn für IE6 =) imagettftext

+0

IE kann es mit einem IE-only proprietären Tag machen. Die meisten anderen gängigen Browser (Firefox, Safari, Opera usw.) können dies mit einem offenen Web-Standard tun: SVG. (Erschienen 2001, immer noch keine Unterstützung von Microsoft.) Ich sehe keinen Gewinn für IE hier. :-) – Ken

0

sein oughta den Trick.

5

Ich glaube nicht, dass Sie Text mit PHP/HTML/CSS drehen können. Sie können jedoch ein Bild mit GD erstellen, das vertikalen Text enthält.

Beispiel:

header ("Content-type: image/png"); 

// imagecreate (x width, y width) 
$img_handle = @imagecreatetruecolor (15, 220) or die ("Cannot Create image"); 

// ImageColorAllocate (image, red, green, blue) 
$back_color = ImageColorAllocate ($img_handle, 0, 0, 0); 
$txt_color = ImageColorAllocate ($img_handle, 255, 255, 255); 
ImageStringUp ($img_handle, 2, 1, 215, $_GET['text'], $txt_color); 
ImagePng ($img_handle); 
ImageDestroy($img_handle); 
+0

Was für $ back_color? – dstonek

0

Soweit ich weiß, dass es nicht möglich ist, vertikalen Text mit CSS zu bekommen, so dass bedeutet, dass der gedrehten Text in einem Bild sein. Es ist sehr einfach, mit PHP 'libgd Schnittstelle zu erzeugen, um eine Bilddatei auszugeben.

Beachten Sie jedoch, dass dies bedeutet, ein Skript zum Erstellen des Bildes und ein anderes zum Erstellen der umgebenden Webseite zu verwenden. Sie können nicht generell (Inline-Daten: URIs) ein Skript mehr als eine Seitenkomponente erzeugen lassen.

+0

@Verandaguy es war nicht gut unterstützt vor dreieinhalb Jahren, als diese Antwort geschrieben wurde – Alnitak

7

Das Problem ist unabhängig von der serverseitigen Sprache. Wenn es kein Problem ist, wenn der vertikal gerenderte Text nicht mehr Text, sondern ein Bild ist, wählen Sie solution provided by tharkun. Andernfalls gibt es Möglichkeiten, dies in der Präsentationsebene zu tun.

Zunächst gibt es (im Moment) eine IE-only-Lösung, die part of the CSS3 standard ist. Sie können check it live.

p { 
    writing-mode: tb-rl; 
} 

Die CSS3 text module auch einige properties for text orientation angeben.

Andere Jungs tun es with SVG.

-3
function verticletext($string) 
    { 
     $tlen = strlen($string); 
     for($i=0;$i<$tlen;$i++) 
     { 
      echo substr($string,$i,1)."<br />"; 
     } 
    } 
+0

Willkommen auf SO, hier ist es eine gute Praxis zu erklären, warum Sie Ihre Lösung verwenden und nicht nur wie. Das wird Ihre Antwort wertvoller machen und dem Leser helfen, besser zu verstehen, wie Sie es tun. Ich schlage auch vor, dass Sie einen Blick auf unsere FAQ werfen: http://stackoverflow.com/faq. – ForceMagic

1
function verticletext($string) 
    { 
     $tlen = strlen($string); 
     for($i=0;$i<$tlen;$i++) 
     { 
      $vtext .= substr($string,$i,1)."<br />"; 
     } 
     return $vtext; 
    } 

dort gehen Sie kein Echo

1

Text Rotation mit anderen Browsern möglich ist.

CSS:

/*Safari*/ 
-webkit-transform: rotate(-90deg); 

/*Firefox*/ 
-moz-transform: rotate(-90deg); 

/*Opera*/ 
-o-transform: rotate(-90deg); 

/*IE*/ 
writing-mode: tb-rl; 
filter: flipV flipH; 
+0

Obwohl dies in allen modernen Browsern funktioniert, wird es von älteren nicht unterstützt. – Jules

1

Ich verwende die Funktion unten, wenn Tabellenkopfzeilen sind zu lang. Es ist sehr nützlich, weil es einfach zu bedienen, schnell und Sie haben keine Texthöhe & Breite zu berechnen. Diese CSS-Gimmicks funktionieren einfach nicht.

####################################################### 
# convert text to image and embed it to html 
# uses /tmp as a cache to make it faster 
# usage: print imagetext("Hello my friend"); 
# Created by Ville Jungman, GPL-licenced, donated by www.varuste.net 

function imagetext($text,$size = 10,$color = array(253,128,46)){ 
    $dir = "/tmp/tekstit"; 
    $filename = "$dir/" . base64_encode($text); 
    if(!file_exists($filename)){ 
    $font = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"; 
    $box = imagettfbbox($size,90,$font,$text); 
    $w = -$box[4] - 1; 
    $h = -$box[3]; 
    $im = imagecreatetruecolor($w,$h); 
    $white = imagecolorallocate($im,$color[1],$color[2],$color[3]); 
    $black = imagecolorallocate($im, 0x00, 0x00, 0x00); 
    imagecolortransparent($im,$white); 
    imagefilledrectangle($im, 0, 0, $size, 99, $white); 
    imagettftext($im,$size,90,$size,$h,$black,$font,$text); 
    @mkdir($dir); 
    imagepng($im,$filename); 
    imagedestroy($im); 
    } 
    $data = base64_encode(file_get_contents($filename)); 
    return "<img src='data:image/png;base64,$data'>"; 

}