标签: php-gd

Yosemite/El Capitan php-gd + mcrypt安装

如何在Yosemite 10.10 - PHP 5.5.14版本中安装/启用php-gdmcrypt

请注意以下步骤安装最新的PHP 5.5.x.

要检查是否已安装gd和mcrypt $ php -m用于显示已编译的模块,如果缺少所需的模块,请继续,请参阅接受的答案.


GD

所以,Apple安装了GD(你正在使用他们的PHP构建,这很好),但不包括对PNG的支持.

如果出现以下情况,您肯定缺少"完整" gd(带png支持)模块: imagecreatefrompng()函数丢失.

"Call to undefined function imagecreatefrompng()"

在此输入图像描述


这个Mcrypt

使用已接受的答案安装brew 并使用gd安装省略部分(除非您需要),并使用以下步骤:

  1. 做搜索 - $ brew search mcrypt
  2. 选择你想要的PHP版本
  3. 安装 - $ brew install php55-mcrypt
  4. 确认使用 $ php -m | grep mcrypt

想在PHP版本之间切换?

查看brew-php-switcher并按照说明操作.

php homebrew php-gd osx-yosemite osx-elcapitan

51
推荐指数
2
解决办法
5万
查看次数

PHP致命错误:调用未定义的函数imagettftext()

为什么我PHP Fatal error: Call to undefined function imagettftext()在第29行收到错误?

<?php
ob_start();
session_start();

$strings = '123456789';
$i = 0;
$characters = 6;
$code = '';
while ($i < $characters)
{ 
    $code .= substr($strings, mt_rand(0, strlen($strings)-1), 1);
    $i++;
} 

$_SESSION['captcha'] = $code;

//generate image
$im = imagecreatetruecolor(124, 40);
$foreground = imagecolorallocate($im, 0, 0, 0);
$shadow = imagecolorallocate($im, 173, 172, 168);
$background = imagecolorallocate($im, 255, 255, 255);

imagefilledrectangle($im, 0, 0, 200, 200, $background);

// use your own font!
$font = 'monofont.ttf';

//draw …
Run Code Online (Sandbox Code Playgroud)

php freetype freetype2 php-gd

34
推荐指数
3
解决办法
5万
查看次数

使用Docker + PHP7 + GD导致"调用未定义的函数imagecreatefromjpeg()"

尝试imagecreatefromjpeg使用此Dockerfile方法生成容器时,我遇到了麻烦:

FROM  php:7.1-apache

RUN apt-get update && \
    apt-get install -y -qq git \
        libjpeg62-turbo-dev \
        apt-transport-https \
        libfreetype6-dev \
        libmcrypt-dev \
        libpng12-dev \
        libssl-dev \
        zip unzip \
        nodejs \
        npm \
        wget \
        vim

RUN pecl install redis && docker-php-ext-enable redis
RUN docker-php-ext-install -j$(nproc) iconv mcrypt zip pdo pdo_mysql gd bcmath

COPY ./containers/yii.conf /etc/apache2/sites-available/000-default.conf

RUN for mod in rewrite headers; do a2enmod $mod; done && service apache2 restart

WORKDIR /var/www/html/
Run Code Online (Sandbox Code Playgroud)

GD已正确安装(libjpeg也 - 出现在php …

php gd php-gd docker

24
推荐指数
2
解决办法
7101
查看次数

PHP错误结果为带有PNG和透明度的imagetruecolortopalette

我正在尝试编写一个PHP脚本,该脚本将调整PNG图像的大小,然后将其转换为PNG-8位模式。因此,生成的文件的大小将较小,但不会造成过多的质量损失。

编辑:引用图像的样式以更好地显示其透明度

调整大小效果完美,同时还保留了图像透明度:

originalImage

问题是当我将图像转换为8位时:

imagetruecolortopalette($resizedImg, true, 255);

imagealphablending($resizedImg, false);

$transparent = imagecolorallocatealpha($resizedImg, 255, 255, 255, 127);
if(!imagefill($resizedImg, 0, 0, $transparent)) return false;

imagesavealpha($resizedImg, true);
Run Code Online (Sandbox Code Playgroud)

生成的图像是这样的,图像周围到处都是透明的:

在此处输入图片说明

如果我设置256种颜色而不是255种颜色:

imagetruecolortopalette($resizedImg, true, 256);
Run Code Online (Sandbox Code Playgroud)

图像将具有黑色背景:

在此处输入图片说明

此图像也会发生类似的结果(注意255种颜色情况下的半透明):

原版的: 在此处输入图片说明 255种颜色: 在此处输入图片说明 256种颜色: 在此处输入图片说明

完整功能的代码:

function resizePng($originalPath, $xImgNew='', $yImgNew='', $newPath='')
{
    if(!trim($originalPath) || !$xyOriginalPath = getimagesize("$originalPath")) return false;
    list($xImg, $yImg) = $xyOriginalPath;

    if(!$originalImg = imagecreatefrompng($originalPath)) return false;

    if(!$resizedImg = imagecreatetruecolor($xImgNew, $yImgNew)) return false;

    // preserve alpha
    imagealphablending($resizedImg, false);
    $transparent = imagecolorallocatealpha($resizedImg, 255, 255, 255, 127);
    if(!imagefill($resizedImg, 0, 0, $transparent)) return …
Run Code Online (Sandbox Code Playgroud)

php png image image-processing php-gd

19
推荐指数
2
解决办法
653
查看次数

升级后,PHP不再支持PNG操作

更新到Mac OS X 10.10(Yosemite)并启动Apache支持PHP之后,除了PNG文件上的任何图像操作外,一切都像以前一样工作.我得到了一个Call to undefined function imagecreatefrompng(),而对JPEG文件的任何操作都有效.所以GD存在,但不适用于PNG.

phpinfo()看起来像是问题中的一行:' - with-png-dir = no'

phpinfo()函数

GD部分来自phpinfo():

在此输入图像描述

如何使用包含的PHP来处理PNG文件?

php php-gd osx-yosemite

16
推荐指数
2
解决办法
2万
查看次数

如何在nginx上安装PHP扩展?

我最近发现了NginX,并决定在我的服务器上试用它.我有运行NginX并能够提供PHP和HTML文件.但现在我想尝试安装drupal.当试图安装它并检查要求时,我被一个要求阻止了.

PHP扩展已禁用

Drupal要求您在以下列表中启用PHP扩展(有关更多信息,请参阅系统要求页面):

GD

我试图通过这样做来安装gd apt-get install php5-gd,它说它已经安装好了.所以我创建了一个phpinfo()文件,并检查是否启用了gd并且我无法找到它.这与NginX或PHP有关吗?我该怎么做才能解决这个问题?

php drupal nginx php-gd

15
推荐指数
1
解决办法
4万
查看次数

无法定位软件包 php7.3-gd

我从 cakephp 2.x 项目中得到错误:

The PHP GD extension is required, but is not installed.
Run Code Online (Sandbox Code Playgroud)

我在 debian 上使用 php7.3 和 apache

我搜索并找到

apt-get install php7.3-gd
Run Code Online (Sandbox Code Playgroud)

我试过这个,但我只收到以下错误:

E: Unable to locate package php7.3-gd
E: Couldn't find any package by glob 'php7.3-gd'
E: Couldn't find any package by regex 'php7.3-gd'
Run Code Online (Sandbox Code Playgroud)

我再次搜索,但没有找到仅适用于 ubunto 的此问题的解决方案,其他方法均无效。我希望有人能帮助我解决这个问题。

php cakephp php-gd

12
推荐指数
1
解决办法
2万
查看次数

PHP递归函数返回值

我在PHP中编写了一个递归函数来裁剪文本.裁剪后的文本将附加到末尾.非裁剪文本将以其原始状态返回.

如果文本符合最大宽度,它可以工作.但是,如果它不适合给定的宽度,函数将不会返回值,但它应该.似乎忽略了整个return语句.如果我用echo替换返回值,它会显示正确的值.

预期的结果:
-TEST ZIN
-TEST ZI
-TESTž
-TEST
-TES
-TE ......(没有在这里返回所以这将永远不会被显示)

function check_length($str, $max, $size = SIZE, $rec = false) {
    echo "FUNCTION $str ";
    list($left, , $right) = imageftbbox($size, 0, FONTURL, $str);
    if($rec == false) {
        if(($right - $left) > $max) {
            echo 'if 1<br />';
            check_length(substr($str, 0, -1), $max, $size, true);
        } else {
            echo 'else 1<br />';
            return $str;
        }
    } else {
        if(($right - $left) > ($max - 9)) {
            echo 'if 2<br />';
            check_length(substr($str, …
Run Code Online (Sandbox Code Playgroud)

php recursion return php-gd

9
推荐指数
1
解决办法
8086
查看次数

PHP GD imagecreatefromstring丢弃透明度

我一直试图让透明度与我的应用程序工作(其中存储在他们面前动态调整大小的图像),我想我终于缩小约太多误导后问题imagealphablendingimagesavealpha.源图像永远不会加载适当的透明度!

// With this line, the output image has no transparency (where it should be
// transparent, colors bleed out randomly or it's completely black, depending
// on the image)
$img = imagecreatefromstring($fileData);
// With this line, it works as expected.
$img = imagecreatefrompng($fileName);

// Blah blah blah, lots of image resize code into $img2 goes here; I finally
// tried just outputting $img instead.

header('Content-Type: image/png');
imagealphablending($img, FALSE);
imagesavealpha($img, TRUE);
imagepng($img);

imagedestroy($img);
Run Code Online (Sandbox Code Playgroud)

从文件加载图像会有一些严重的架构难度; 此代码与从iPhone应用程序查询的JSON API一起使用,在这种情况下(并且更加一致)在POST数据中将图像作为base64编码的字符串上载更容易.我是否绝对 …

php php-gd

9
推荐指数
2
解决办法
4529
查看次数

尝试在Docker官方映像中将freetype添加到php-gd

我正在尝试向PHP GD安装添加一些功能。我正在使用Docker PHP“官方”发行版作为基础(php:7.1.15-fpm-jessie)。

我当前的生产环境使用CentOS,该GD模块带有FreeType,JPEG和PNG支持,如phpinfo输出所示:

GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.4.11
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.5.13
WBMP Support => enabled
XPM Support => enabled
libXpm Version => 30411
XBM Support => enabled
WebP Support => enabled

Directive => Local …
Run Code Online (Sandbox Code Playgroud)

php php-gd docker

9
推荐指数
2
解决办法
3735
查看次数