我在网上找到的所有例子似乎都是用现有的png文本创建png.是否可以从头开始创建透明的png,然后添加文本?
到目前为止我已经得到的代码(但它不起作用.只输出一个空白图像源)
<?php
$width = 150;
$height = 30;
$text = "My Text";
$fontsize = 5;
$im = imagecreate($width, $height);
$transcolor = imagecolortransparent($im);
imagestring($im, $fontsize, 0, 0, $text, $transcolor);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Run Code Online (Sandbox Code Playgroud) 我正在使用imagecreatefromjpeg()函数合并两张图片..
现在我面临的问题是,当我使用服务器上的图片时,它工作得很好,当我使用来自其他网站的图片时,它不起作用.
例如:当我使用这个带有函数的PHP文件http://coolfbapps.in/test/merger.php时
imagecreatefrompng('http://coolfbapps.in/test/1.png');
Run Code Online (Sandbox Code Playgroud)
它的工作原理非常好,因为图像在我自己的服务器上
但是当我改变这个功能时,把一个不在我服务器上的图像链接,
例如.
imagecreatefrompng('http://www.businesseconomics/Test.png');
Run Code Online (Sandbox Code Playgroud)
它不起作用.(图像文件不在我的服务器上)
请建议我替代此功能或解决方案,因为我想在Facebook应用程序中使用它.
像file-get-contents这样的函数也显示相同的错误.我希望它不是服务器端问题.. allow_url_fopen已打开但allow_url_include已关闭
更新......实际代码.我用它来合并两张照片
$dest = imagecreatefrompng('http://coolfbapps.in/test/1.png');
$src = imagejpeg('http://img.allvoices.com/thumbs/image/111/111/75152279-pic.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100);
header('Content-Type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
Run Code Online (Sandbox Code Playgroud) 我有以下代码,作为游戏的一部分每 10 毫秒运行一次:
private void gameRender()
{
if(dbImage == null)
{
//createImage() returns null if GraphicsEnvironment.isHeadless()
//returns true. (java.awt.GraphicsEnvironment)
dbImage = createImage(PWIDTH, PHEIGHT);
if(dbImage == null)
{
System.out.println("dbImage is null"); //Error recieved
return;
}
else
dbg = dbImage.getGraphics();
}
//clear the background
dbg.setColor(Color.white);
dbg.fillRect(0, 0, PWIDTH, PHEIGHT);
//draw game elements...
if(gameOver)
{
gameOverMessage(dbg);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它输入 if 语句来检查图像是否为空,即使在我尝试定义图像之后也是如此。我环顾四周,如果 GraphicsEnvironment.isHeadless() 返回 true,createImage() 似乎将返回 null。
我不太明白 isHeadless() 方法的用途是什么,但我认为它可能与编译器或 IDE 有关,所以我尝试了两个,两者都得到相同的错误(Eclipse 和 BlueJ)。任何人都知道错误的根源是什么,以及我如何解决它?
提前致谢
乔纳森
...................................................... ......................
编辑:我正在使用 java.awt.Component.createImage(int width, int height)。此方法的目的是确保创建和编辑包含游戏玩家视图的图像,稍后将通过 JPanel …
我正在使用此代码将文本与图像合并,并且工作正常.但是当我在Facebook应用程序中使用此代码时,它不会显示任何输出.有人可以帮我解决问题吗?据我所知,问题在于这一行:
header("Content-Type: image/jpeg");
Run Code Online (Sandbox Code Playgroud)
当我删除它时,它显示一些混乱的输出.
<?php
header("Content-Type: image/jpeg");
$im = ImageCreateFrompng("jump_empty.png");
$black = ImageColorAllocate($im, 255, 255, 255);
$start_x = 10;
$start_y = 20;
Imagettftext($im, 12, 0, $start_x, $start_y, $black, 'ambient.ttf', "hellooo");
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>
Run Code Online (Sandbox Code Playgroud)
这是我用于Facebook应用程序的代码:
<?php
include_once 'facebook.php';
include_once 'config.php';
$facebook = new Facebook(array(
'appId' => FACEBOOK_APP_ID,
'secret' => FACEBOOK_SECRET_KEY,
'cookie' => true,
'domain' => '_____'
));
header("Content-Type: image/jpeg");
$session = $facebook->getSession();
if (!$session) {
$url = $facebook->getLoginUrl(array(
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'read_stream,publish_stream'
));
echo …Run Code Online (Sandbox Code Playgroud)