mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: So 04.12.2016 15:23 Benutzername: Passwort: Auto-Login

Thema: [php] imageTTFBbox will nich so recht… vom 20.01.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] imageTTFBbox will nich so recht…
Seite: 1, 2, 3  Weiter
Autor Nachricht
beeviZ
Threadersteller

Dabei seit: 30.09.2002
Ort: Dortmund
Alter: 23
Geschlecht: Männlich
Verfasst Do 20.01.2005 14:45
Titel

[php] imageTTFBbox will nich so recht…

Antworten mit Zitat Zum Seitenanfang

Ich habe auf einer Seite dieses Script
http://webdesign.weisshart.de/dynatext.php

benutzt. Bei mir lokal auf dem Rechner funktioniert dies auch perfekt. Lad ichs hoch, bekomme ich nur den Fehler:
Error: Server could not create this heading image.

also muss der Fehler irgendwo in diesem Teil liegen:

Code:
// create image
$background_rgb = hex_to_rgb($background_color) ;
$font_rgb = hex_to_rgb($font_color) ;
$dip = get_dip($font_file,$font_size) ;
$box = @ImageTTFBBox($font_size,0,$font_file,$text) ;
$image = @ImageCreate(abs($box[2]-$box[0]),abs($box[5]-$dip)) ;
if(!$image || !$box)
{
    fatal_error('Error: The server could not create this heading image.') ;
}


habs geprüft, und es liegt wohl speziell an der Zeile
$box = @ImageTTFBBox($font_size,0,$font_file,$text) ;

Also ImageTTFBox is der Übeltäter. Schnell nachgeguckt, und: This function requires both the GD library and the FreeType library.

Nochmal schnell nachgeguckt, phpinfo();
Configure Command:
(...)-with-ttf' '--with-freetype-dir=yes'(...)

GD
FreeType Support enabled


GD scheint wohl installiert, Freetype aktiviert zu sein.

Wo könnte denn jetzt der Fehler noch liegen?! ich habe einen Ordner 'cache' erstellt 777 gemodded, das komplette Verzeichnis wie ich es auf der Platte habe hochgeladen, groß/kleinschreibung überprüft, ohne Ergebnis…

Kann mir irgendwer auf die Sprünge helfen woran das evtl liegen könnte?? Ich verzweifle hier schon *Schnief*

//edit:
hat sich erledigt. die ganze welt will mich heute verarschen.
server platt gemacht, alles neu hochgeladen, und es funktioniert…


Zuletzt bearbeitet von beeviZ am Do 20.01.2005 14:54, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 38
Geschlecht: Männlich
Verfasst Do 20.01.2005 16:16
Titel

Antworten mit Zitat Zum Seitenanfang

Schon probiert die "@" wegzulassen für eventuell hilfreiche Fehlermeldungen?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
beeviZ
Threadersteller

Dabei seit: 30.09.2002
Ort: Dortmund
Alter: 23
Geschlecht: Männlich
Verfasst Fr 21.01.2005 02:28
Titel

Antworten mit Zitat Zum Seitenanfang

so. also... der fehler kam nur nicht mehr weil er die bilder angezeigt hatte die ich lokal erzeugt habe und die noch im "cache" ordner waren...

ich habe auch mal das @ entfernt, nen fehler bekomme ich aber trotzdem nicht rausgegeben. nur halt das ein bild mit dem text "Error: Server could not create Image .."

wer möchte kann ja mal schauen
www.manuelbieh.de/dev/test.php

tja.. woran kann sowas denn liegen? normalerweise ist das immer genau andersrum. Das nämlich das was online geht, nicht bei mir lokal funktioniert Menno!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 38
Geschlecht: Männlich
Verfasst Fr 21.01.2005 10:10
Titel

Antworten mit Zitat Zum Seitenanfang

beeviZ hat geschrieben:

wer möchte kann ja mal schauen
www.manuelbieh.de/dev/test.php


404...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
beeviZ
Threadersteller

Dabei seit: 30.09.2002
Ort: Dortmund
Alter: 23
Geschlecht: Männlich
Verfasst Fr 21.01.2005 12:21
Titel

Antworten mit Zitat Zum Seitenanfang

oops. sorry.

www.manuelbieh.de/dev/purchaze/test.php ist die richtige *zwinker*
danke Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
sahnemuh

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 35
Geschlecht: Männlich
Verfasst Fr 21.01.2005 12:37
Titel

Antworten mit Zitat Zum Seitenanfang

ich hatte solche probleme mal, als gd1 anstatt gd2 auf nem server installliert war. nach nem update liefs.

gd1 kennt einige der imageTTF funktionen nicht.
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Offenbach am Main
Alter: 36
Geschlecht: Männlich
Verfasst Fr 21.01.2005 12:53
Titel

Antworten mit Zitat Zum Seitenanfang

Kannst Du mal den kompletten Source-Code posten.
Was für ein OS mit welcher GD und phpVersion?
-> alternative ImageMagick
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
beeviZ
Threadersteller

Dabei seit: 30.09.2002
Ort: Dortmund
Alter: 23
Geschlecht: Männlich
Verfasst Fr 21.01.2005 13:55
Titel

Antworten mit Zitat Zum Seitenanfang

den kompletten code hab ich ja am anfang der seite schonmal als link gepostet. Aber ich kann ihn auch nochmal hier posten

Code:

<?php
/*
    Dynamic Heading Generator
    By Stewart Rosenberger
    http://www.stewartspeak.com/headings/   

    This script generates PNG images of text, written in
    the font/size that you specify. These PNG images are passed
    back to the browser. Optionally, they can be cached for later use.
    If a cached image is found, a new image will not be generated,
    and the existing copy will be sent to the browser.

    Additional documentation on PHP's image handling capabilities can
    be found at http://www.php.net/image/   
*/


$font_file  = 'font.ttf' ;
$font_size  = 50 ;
$font_color = '#000000' ;
$background_color = '#ffffff' ;
$transparent_background  = true ;
$cache_images = true ;
$cache_folder = 'cache' ;







/*
  ---------------------------------------------------------------------------
   For basic usage, you should not need to edit anything below this comment.
   If you need to further customize this script's abilities, make sure you
   are familiar with PHP and its image handling capabilities.
  ---------------------------------------------------------------------------
*/

$mime_type = 'image/png' ;
$extension = '.png' ;
$send_buffer_size = 4096 ;

// check for GD support
if(!function_exists('ImageCreate'))
    fatal_error('Error: Server does not support PHP image generation') ;

// clean up text
if(empty($_GET['text']))
    fatal_error('Error: No text specified.') ;
   
$text = $_GET['text'] ;
if(get_magic_quotes_gpc())
    $text = stripslashes($text) ;
$text = javascript_to_html($text) ;

// look for cached copy, send if it exists
$hash = md5(basename($font_file) . $font_size . $font_color .
            $background_color . $transparent_background . $text) ;
$cache_filename = $cache_folder . '/' . $hash . $extension ;
if($cache_images && ($file = @fopen($cache_filename,'rb')))
{
    header('Content-type: ' . $mime_type) ;
    while(!feof($file))
        print(($buffer = fread($file,$send_buffer_size))) ;
    fclose($file) ;
    exit ;
}

// check font availability
$font_found = is_readable($font_file) ;
if(!$font_found)
{
    fatal_error('Error: The server is missing the specified font.') ;
}

// create image
$background_rgb = hex_to_rgb($background_color) ;
$font_rgb = hex_to_rgb($font_color) ;
$dip = get_dip($font_file,$font_size) ;
$box = @ImageTTFBBox($font_size,0,$font_file,$text) ;
$image = @ImageCreate(abs($box[2]-$box[0]),abs($box[5]-$dip)) ;
if(!$image || !$box)
{
    fatal_error('Error: The server could not create this heading image.') ;
}

// allocate colors and draw text
$background_color = @ImageColorAllocate($image,$background_rgb['red'],
    $background_rgb['green'],$background_rgb['blue']) ;
$font_color = ImageColorAllocate($image,$font_rgb['red'],
    $font_rgb['green'],$font_rgb['blue']) ;   
ImageTTFText($image,$font_size,0,-$box[0],abs($box[5]-$box[3])-$box[1],
    $font_color,$font_file,$text) ;

// set transparency
if($transparent_background)
    ImageColorTransparent($image,$background_color) ;

header('Content-type: ' . $mime_type) ;
ImagePNG($image) ;

// save copy of image for cache
if($cache_images)
{
    @ImagePNG($image,$cache_filename) ;
}

ImageDestroy($image) ;
exit ;


/*
   try to determine the "dip" (pixels dropped below baseline) of this
   font for this size.
*/
function get_dip($font,$size)
{
   $test_chars = 'abcdefghijklmnopqrstuvwxyz' .
               'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .
              '1234567890' .
              '!@#$%^&*()\'"\\/;.,`~<>[]{}-+_-=' ;
   $box = @ImageTTFBBox($size,0,$font,$test_chars) ;
   return $box[3] ;
}


/*
    attempt to create an image containing the error message given.
    if this works, the image is sent to the browser. if not, an error
    is logged, and passed back to the browser as a 500 code instead.
*/
function fatal_error($message)
{
    // send an image
    if(function_exists('ImageCreate'))
    {
        $width = ImageFontWidth(5) * strlen($message) + 10 ;
        $height = ImageFontHeight(5) + 10 ;
        if($image = ImageCreate($width,$height))
        {
            $background = ImageColorAllocate($image,255,255,255) ;
            $text_color = ImageColorAllocate($image,0,0,0) ;
            ImageString($image,5,5,5,$message,$text_color) ;   
            header('Content-type: image/png') ;
            ImagePNG($image) ;
            ImageDestroy($image) ;
            exit ;
        }
    }

    // send 500 code
    header("HTTP/1.0 500 Internal Server Error") ;
    print($message) ;
    exit ;
}


/*
    decode an HTML hex-code into an array of R,G, and B values.
    accepts these formats: (case insensitive) #ffffff, ffffff, #fff, fff
*/   
function hex_to_rgb($hex)
{
    // remove '#'
    if(substr($hex,0,1) == '#')
        $hex = substr($hex,1) ;

    // expand short form ('fff') color
    if(strlen($hex) == 3)
    {
        $hex = substr($hex,0,1) . substr($hex,0,1) .
               substr($hex,1,1) . substr($hex,1,1) .
               substr($hex,2,1) . substr($hex,2,1) ;
    }

    if(strlen($hex) != 6)
        fatal_error('Error: Invalid color "'.$hex.'"') ;

    // convert
    $rgb['red'] = hexdec(substr($hex,0,2)) ;
    $rgb['green'] = hexdec(substr($hex,2,2)) ;
    $rgb['blue'] = hexdec(substr($hex,4,2)) ;

    return $rgb ;
}


/*
    convert embedded, javascript unicode characters into embedded HTML
    entities. (e.g. '%u2018' => '‘'). returns the converted string.
*/
function javascript_to_html($text)
{
    $matches = null ;
    preg_match_all('/%u([0-9A-F]{4})/i',$text,$matches) ;
    if(!empty($matches)) for($i=0;$i<sizeof($matches[0]);$i++)
        $text = str_replace($matches[0][$i],
                            '&#'.hexdec($matches[1][$i]).';',$text) ;

    return $text ;
}

?>


im //create image-Teil scheint der Fehler zu stecken.

Dieser Fehler kommt auf jeden Fall:
http://www.manuelbieh.de/dev/purchaze/_heading.php?text=hallo

GD Version ist 2 installiert:
Zitat:

gd
GD Support enabled
GD Version bundled (2.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
T1Lib Support enabled
GIF Read Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled


Bin echt ratlos.
Ansonsten, ich weiß nich ob ImageMagick so einfach möglich wäre. Ich hoste ja bei AllInkl wo das nicht im Paket ist. Da müsste ich dann wohl extra löhnen. Wenn das denn überhaupt möglich ist. hmmmm Menno!

An den Ordnerrechten kann es aber auch nicht liegen was ich zuerst dachte. Die Ordner haben alle 777, und selbst wenn ich cache = false setze kann das Bild nicht erzeugt werden. ..... *Schnief*

//edit:
Wegen OS und so:
Apache/1.3.27 (Linux/SuSE) mod_fastcgi/2.4.2 FrontPage/4.0.4.3 PHP/4.3.1 mod_perl/1.27 mod_ssl/2.8.12 OpenSSL/0.9.6i


Zuletzt bearbeitet von beeviZ am Fr 21.01.2005 13:58, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [php] ImageTTFBbox
[PHP] Was will mir PHP damit sagen?? Hilfe Bitte! Wichtig!
[PHP] Gibts die Variable akt. Zeile des PHP-Codes?
[php] Möglichkeiten php-Ausgaben in html Website einzubauen
PHP: Formularinhalte aus HTML-Site in PHP-Formular senden!
[PHP/MySQL] Datum aus Datenbank per PHP umwandeln
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.