我有一个 PHP 脚本,可以使用 PHP GD 生成图像。生成图像后,将其保存,并在 Ajax 调用时发送以下输出:
imagejpeg($img_data, 'filename.jpg');
echo '<img src="/filename.jpg.jpg">';
Run Code Online (Sandbox Code Playgroud)
之后,图像显示在页面上,一切都很好。但是,我不想每次都创建一个图像。有什么方法可以让我仅通过 Ajax$raw_data字符串返回并显示图像吗?我尝试这样:
echo $img_data;
Run Code Online (Sandbox Code Playgroud)
但运气不好,返回的只是一些?。
这是我的 jQuery Ajax 代码:
$.ajax({
type: 'POST',
data: {
action: 'update_image',
//some instructions for creating the image
},
url: 'script.php',
success: function(msg) {
$('#somediv').append(msg);
}
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试安装 Moodle,但它显示 php-gd 扩展丢失/应该启用。然而,gd 已经安装并且是最新的,当我命令时,php -v我收到以下错误,如下所示。
PHP Warning: PHP Startup: Unable to load dynamic library 'gd.so' (tried: /usr/lib64/php/modules/gd.so (/lib64/libraqm.so.0: undefined symbol: hb_ft_font_set_load_flags), /usr/lib64/php/modules/gd.so.so (/usr/lib64/php/modules/gd.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.3.17 (cli) (built: Apr 14 2020 08:29:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.17, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.17, Copyright (c) 1999-2018, by Zend Technologies
Run Code Online (Sandbox Code Playgroud)
我做了很多编辑,但找不到单一的解决方案。请帮忙
我将在整个过程中使用这些变量:
$ROOTDIR = $_SERVER["DOCUMENT_ROOT"];
$ROOTFILE = "http://www.scottandjessiecooper.com/webtutorials/images/smiley.png";
$NEWFILE = "$ROOTDIR/images/tmp/new_smiley.png";
Run Code Online (Sandbox Code Playgroud)
当我使用此功能时,透明度没有问题
function save_image($root, $saveto){
copy($root, $saveto);
}
save_image( $ROOTFILE, $NEWFILE ); // root can be file or url
Run Code Online (Sandbox Code Playgroud)
但是我需要使用IMAGE_RESOURCE所以我可以在需要时操作ROOTFILE
所以我尝试了这个:
if ( file_exists( $NEWFILE ) ) unlink ($NEWFILE);
$image = imagecreatefrompng( $ROOTFILE );
imagepng( $image, $NEWFILE );
imagedestroy( $image );
Run Code Online (Sandbox Code Playgroud)
现在当我使用这个时:
<img src="<?=$NEWFILE?>" />
Run Code Online (Sandbox Code Playgroud)
我失去了透明度。背景变黑了!
所以我尝试输出图像以确保它不是导致问题的保存:
if ( file_exists( $NEWFILE ) ) unlink ($NEWFILE);
$image = imagecreatefrompng( $ROOTFILE );
header('Content-Type: image/png'); …Run Code Online (Sandbox Code Playgroud) 我必须上传满足最大宽度尺寸和最大文件大小的图像文件。
我有检查宽度大小并调整图像大小以满足最大图像宽度的代码。
但是,当我保存文件时,我可以设置质量
imagejpeg( $imgObject , 'resized/50.jpg' , 50 ); //save image and set quality
Run Code Online (Sandbox Code Playgroud)
我想做的是避免设置标准质量,因为提交的图像质量差异很大,并且一开始可能很低。
图像的质量应设置得尽可能高,且不超过最大文件大小限制。
我唯一的解决方案是以不同质量保存图像的多个版本,检查每个文件大小并选择最好的一个。这可行,但速度非常慢并且过程密集。
关于如何做得更好有什么建议吗?
谢谢
我正在尝试使用此命令在php5.5 amazon ec2服务器上安装php gd扩展
yum install php-gd
Run Code Online (Sandbox Code Playgroud)
日志:
Loaded plugins: priorities, update-motd, upgrade-helper
Resolving Dependencies
--> Running transaction check
---> Package php-gd.x86_64 0:5.3.28-1.5.amzn1 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.28-1.5.amzn1 for package: php-gd-5.3.28-1.5.amzn1.x86_64
--> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.3.28-1.5.amzn1.x86_64
--> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.3.28-1.5.amzn1.x86_64
--> Running transaction check
---> Package libXpm.x86_64 0:3.5.10-2.9.amzn1 will be installed
---> Package php-common.x86_64 0:5.3.28-1.5.amzn1 will be installed
---> Package t1lib.x86_64 0:5.1.2-6.5.amzn1 will be installed
--> Processing Conflict: php55-common-5.5.14-1.75.amzn1.x86_64 conflicts php-common …Run Code Online (Sandbox Code Playgroud) 我需要开发一个PHP应用程序,它将生成条形码,并且还能够读取这些条形码.
由于我的应用程序将是一个基于Web的应用程序,而底层技术是PHP,它是一种服务器端脚本语言,我觉得条形码生成不会成为问题,但扫描和读取这些条形码可能是一个挑战.
如果可以在PHP应用程序中读取条形码,请指导我.
我不知道如何使用 imagettftext 将文本放在 php 创建的图像中。这是我的代码:
header('Content-Type: image/png');
$im = imagecreatetruecolor(260, 180);
$background = imagecolorallocate($im, 0, 0, 255);
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 60, 153, 181);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 200, $white);
$text = $_GET['tname'];
$font = 'OpenSans-Semibold.ttf';
imagettftext($im, 20, 0, $x+1, $y+1, $grey, $font, $text);
imagettftext($im, 20, 0, $x, $y, $black, $font, $text);
imagepng($im);
imagedestroy($im);
Run Code Online (Sandbox Code Playgroud) php-gd ×7
php ×6
gd ×2
image ×2
ajax ×1
amazon-ec2 ×1
barcode ×1
compression ×1
jquery ×1
linux ×1