1

データベースから画像にテキストを追加するために gd-text を使用しています。

両方 (画像/テキスト) は外部クラスによって生成されます。

コードは次のとおりです。

<?php

//Includes
include 'gdtext/Color.php';
include 'gdtext/Box.php';

include 'class.getSlogan.php';
include 'class.getImage.php';

use GDText\Box;
use GDText\Color;

//Date
$timestamp = time();
$date = date("d.m.Y", $timestamp);


$slogan_txt = dailySlogan();
$img = dailyImage();

//Set Imagepath
$imgPath = '../../images/output/1500_' .$img['imageName'];


//Create Image
$im = imagecreatefromjpeg($imgPath);

//Get X/Y for Box
$image_width = imagesx($im);  
$image_height  = imagesy($im);
$y = ($image_height / 2 );
$max_x = ($image_width / 2 );
$start = ($max_x / 2);


//Generate Text
$box = new Box($im);
$box->setFontFace('font.TTF'); 
$box->setFontSize(60);
$box->setFontColor(new Color(255, 255, 255));
$box->setTextShadow(new Color(0, 0, 0, 50), 0, -2);
$box->setBox($start, $y, $max_x, 0);
$box->setTextAlign('center', 'center');
$box->draw($slogan_txt['en']);

// header("Content-Disposition: attachment; filename=\"motivation_" . $date . ".jpg\";");
// header('Content-Type: image/jpeg');

//Save
imagejpeg($im, 'test.jpg');

次の行は直接ダウンロード用であり、テキストが追加されていない理由を理解しようとしてコメントアウトされています。

// header("Content-Disposition: attachment; filename=\"motivation_" . $date . ".jpg\";");
// header('Content-Type: image/jpeg');

画像はテキストを追加せずに作成されます。$slogan_txt['en'] には正しい値が入力されています。また、x/y 座標は必要に応じて計算されます。

サーバー上のPHPまたはApacheログにエラーはありません。

私は何か見落としてますか?数か月前に作成したスクリプトからコードを取得しましたが、覚えているとおりにうまく機能しました。

どんな助け/ヒントも大歓迎です! ありがとう!

4

1 に答える 1

0

理由はよくわかりませんが、「font.ttf」を775から777に設定するとうまくいきました...

于 2016-07-08T18:23:10.560 に答える