所以,我想要的是用户可以上传图片的地方,PHP脚本会为其添加水印,而图片将使用imgur API托管在imgur上
为图像添加水印并将其托管到imgur不是问题,但问题是:将图像上传到imgur,我们必须通过图片的base64,我无法获取已经给出的图片使用file_get_contents
和fopen
的PHP脚本水印,它总是给出错误
有人请帮助我解决问题,以便我可以获取图像,将其编码为base64
这就是全部
更新:
只是告诉你,我使用该函数直接打开PHP文件而不首先将pic保存到磁盘,由于某种原因我无法将图像保存到磁盘,这就是我使用imgur的原因
再次更新:
这是我的代码:
<?php
header('Content-type: image/png');
$image = $_GET['url'];
$imagesize = getimagesize($image);
$img = imagecreatetruecolor($imagesize[0], $imagesize[1] + 50);
imagecopy($img, imagecreatefrompng($image), 0, 0, 0, 0, $imagesize[0], $imagesize[1]);
$string = "Some wild watermarks";
$font = "font.ttf";
$fontSize="30";
$textColor = imagecolorallocate($img, 255,255,255);
$x=7;
$y=$imagesize[1] + 42;
imagettftext($img,$fontSize,0,$x,$y,$textColor,$font,$string);
imagepng($img);
?>
这是我得到的错误:
使用file_get_contents
:
Warning: file_get_contents(watermark.php?url=roughdesign.png) [function.file-get-contents]: failed to open stream: Result too large in URL
使用fopen
:
Warning: fopen(watermark.php?url=roughdesign.png) [function.fopen]: failed to open stream: Result too large in URL
Warning: filesize() [function.filesize]: stat failed for URL
Warning: fread(): supplied argument is not a valid stream resource in URL
答案 0 :(得分:0)
你可以试试这个 -
<?php
function base64_encode_image ($filename=string,$filetype=string) {
if ($filename) {
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
}
}
?>
您可以在base64_encode
上找到更多信息OR
或者你也可以这样做 -
$imageContent= file_get_contents($yourImage);
$encoded = base64_encode($imageContent);
答案 1 :(得分:0)
简单的伪代码理念
这应该可以正常工作。如果你得到任何错误说明他们说什么以及你得到了什么。