请注意以下步骤安装最新的PHP 5.5.x.
要检查是否已安装gd和mcrypt $ php -m用于显示已编译的模块,如果缺少所需的模块,请继续,请参阅接受的答案.
所以,Apple安装了GD(你正在使用他们的PHP构建,这很好),但不包括对PNG的支持.
如果出现以下情况,您肯定缺少"完整" gd(带png支持)模块: imagecreatefrompng()函数丢失.
"Call to undefined function imagecreatefrompng()"

使用已接受的答案安装brew 并使用gd安装省略部分(除非您需要),并使用以下步骤:
$ brew search mcrypt$ brew install php55-mcrypt$ php -m | grep mcrypt查看brew-php-switcher并按照说明操作.
为什么我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) 尝试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脚本,该脚本将调整PNG图像的大小,然后将其转换为PNG-8位模式。因此,生成的文件的大小将较小,但不会造成过多的质量损失。
编辑:引用图像的样式以更好地显示其透明度
调整大小效果完美,同时还保留了图像透明度:
问题是当我将图像转换为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种颜色情况下的半透明):
完整功能的代码:
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) 更新到Mac OS X 10.10(Yosemite)并启动Apache支持PHP之后,除了PNG文件上的任何图像操作外,一切都像以前一样工作.我得到了一个Call to undefined function imagecreatefrompng(),而对JPEG文件的任何操作都有效.所以GD存在,但不适用于PNG.
phpinfo()看起来像是问题中的一行:' - with-png-dir = no'

GD部分来自phpinfo():

如何使用包含的PHP来处理PNG文件?
我最近发现了NginX,并决定在我的服务器上试用它.我有运行NginX并能够提供PHP和HTML文件.但现在我想尝试安装drupal.当试图安装它并检查要求时,我被一个要求阻止了.
PHP扩展已禁用
Drupal要求您在以下列表中启用PHP扩展(有关更多信息,请参阅系统要求页面):
GD
我试图通过这样做来安装gd apt-get install php5-gd,它说它已经安装好了.所以我创建了一个phpinfo()文件,并检查是否启用了gd并且我无法找到它.这与NginX或PHP有关吗?我该怎么做才能解决这个问题?
我从 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中编写了一个递归函数来裁剪文本.裁剪后的文本将附加到末尾.非裁剪文本将以其原始状态返回.
如果文本符合最大宽度,它可以工作.但是,如果它不适合给定的宽度,函数将不会返回值,但它应该.似乎忽略了整个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) 我一直试图让透明度与我的应用程序工作(其中存储在他们面前动态调整大小的图像),我想我终于缩小约太多误导后问题imagealphablending和imagesavealpha.源图像永远不会加载适当的透明度!
// 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 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)