Текст Imagick перезаписывает каждый кадр - PullRequest
1 голос
/ 20 февраля 2020

Я создал этот код Imagick php для создания моих собственных изображений в формате GIF. Весь код идеален, кроме одной вещи. Последний текст (дата) заменяет текст заголовка. Может кто-нибудь понять это?

Результат для того, что я построил, выглядит следующим образом

[! [Введите описание изображения здесь] [1]] [1]

Это код этого

        ob_clean();
        $text=ucfirst('Title Name');
        $image = new Imagick('1.gif'); 

        $draw = new ImagickDraw(); 
        $frameCount = 0;
        foreach($image as $frame){
        $image->setImageDelay((($frameCount % 40) * 40));

        $draw->setGravity (Imagick::GRAVITY_NORTHWEST);
        $draw->setTextAlignment(Imagick::ALIGN_CENTER);

        $imgSize   = $image->getImageGeometry();
        $imgHeight = $imgSize['height']; 
        $imgWidth = $imgSize['width'];
        // Calculate size
        $textProperties = array( 'textWidth' => 0 );
        $textDesiredWidth = intval( $imgWidth * 0.9 );

        $defaultFontSize = 25;
        $fontSize = 0;
        $draw->setFillColor('white'); 
        /* Font properties */
        $draw->setFont('assets/fonts/EX.ttf'); 
        while ( $textProperties['textWidth'] <= $textDesiredWidth ) {
            $draw->setFontSize( $fontSize );
            $textProperties = $image->queryFontMetrics( $draw, $text );
            $fontSize++;
        }

        if($fontSize>$defaultFontSize){
            $draw->setFontSize( $defaultFontSize );
            $centerY = floor( ($imgHeight) / 3.3 );
        }else{
            $centerY = floor( ($imgHeight) / 3.6 );
        }
        $centerX = intval( ($imgWidth) / 2 );
        $image->annotateImage( $draw, $centerX, $centerY, 0, $text );

. Как вы видите, дата ('58 days a go ') заменяет текст "PAYING" на изображении gif

любой может помочь мне понять это? спасибо

1 Ответ

0 голосов
/ 20 февраля 2020

Нашли исправление. !!

Сначала нам нужно узнать высоту изображений, затем поменять положение Y

$imgHeight/1

и поставить в правильное положение.

...