我用QRCode写的一个二维码生成,加logo本地生成是成功的。当在SAE上二维码生成成功,后面加logo却不行,难道SAE上不支持:imagecopyresampled函数。
function Build_SAEQrcode($filename = '', $text='', $size='8', $logo = false){
$return = false;
$level='H';
$padding=1;
$path = 'saestor://uploads/direwm/';
$QR = $path.$filename.".png";
vendor("phpqrcode.qrlib");
QRcode::png($text,$QR, $level, $size,$padding);
if($logo === true){
$QR = imagecreatefromstring(file_get_contents($QR));
$logocontext = imagecreatefromstring(file_get_contents('./uploads/logo.png'));
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logocontext);
$logo_height = imagesy($logocontext);
$logo_qr_width = $QR_width / 5;
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale;
$from_width = ($QR_width - $logo_qr_width) / 2;
$return = imagecopyresampled($QR, $logocontext, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
header("Content-Type:image/png");
imagepng($QR, $path.$filename.".png");
}else $return = true;
imagedestroy($QR);
return $return;
}
------解决思路----------------------
以前用过,后来因为他不让我免费使用了,就放弃了
imagepng($QR, $path.$filename.".png");
是肯定不支持的,因为常规的文件系统不可用了。但去掉文件名($path.$filename.".png")是可以的
file_get_contents 是否还有用,没有测试过,不确定