上传imagecreatefrompng到服务器

问题描述:

我想上传一个从Java创建的toDataURL图像,用JavaScript自动提交表单提交,由PHP捕获并使用imagecreatefrompng()转换并分配给一个变量。上传imagecreatefrompng到服务器

这里是开始的代码:

Javascript代码:

if(getImageData == true){ 
    console.log("Saving avatar as image..."); 
    window.setTimeout(function() { 
    imgData = renderer.domElement.toDataURL("image/png"); 
    document.getElementById('avatarimg').src = imgData; 
    document.getElementById("timg").value = imgData; 
    console.log(imgData); 
    document.getElementById("form1").submit(); 
    console.log("Avatar saved as PNG img."); 
}, 300); 
getImageData = false; 

PHP代码:

if($_POST['timg']){ 
    $renderedav = imagecreatefrompng($_POST['timg']); 
    imageAlphaBlending($renderedav, true); 
    imageSaveAlpha($renderedav, true); 
    $target = "images/Avatars/"; 
    $newname = md5($_POST['timg']); 
    echo ("<font color='#000000'>Image rendered. - " . $newname . " </font>"); 
    $target = $target . $newname . ".png"; 
    if(move_uploaded_file($renderedav, $target)) 
    { echo("File uploaded."); }else{echo("Error uploading file.");} 
} 

当我使用显示图像作为原料IMG imgData,一切看起来不错,但我想创建一个实际的图像m数据并使用在$newname中创建的名称将其上传到我的数据库中的目录。这可能吗?我正确地进行了吗?我知道move_uploaded_file()是为了将一个暂停的文件从一个文件表单元素移动到一个新位置,但在我的研究中,我找不到另一种方法来做到这一点。

这里有一对夫妇的事情,是行不通的:

  1. 无法通过回一些HTML编写过顶的文字,你必须使用一个gdlib文本功能类似imagettftext()。一个注意,你必须指向一个字体文件来使用它(Resource here)。如果你没有试图在图像上面写这个echo ("<font color='#000000'>Image rendered. - " . $newname . " </font>");,忽略脚本的这部分,但你仍然不能这样做,因为如果你回应任何东西(或者在你的脚本之前有空的空间),它会破坏图像。
  2. 您必须使用imagepng()(Resource here)来保存文件。

PHP脚本:

if($_POST['timg']){ 
    // Set file path info 
    $target = "images/Avatars/"; 
    $newname = md5($_POST['timg']); 
    $target = $target.$newname.".png"; 
    // Start gdlib functions 
    $renderedav = imagecreatefrompng($_POST['timg']); 
    imagealphablending($renderedav, true); 
    imagesavealpha($renderedav, true); 
    $fColor_white = imagecolorallocate($renderedav, 255, 255, 255); 
    // Path to truetype font 
    $font = 'font.TTF'; 
    // Add text to image 
    imagettftext($renderedav, 25, 0, 75, 300, $fColor_white, $font, "Image rendered. - ".$newname); 
    // Here you output the png and use the second parameter to save to a destination 
    imagepng($renderedav,$target); 
    // Now you destroy the resouce 
    imagedestroy($renderedav); 
} 
+1

我是不是要在屏幕上书写文字,这只是一个可视化调试的事情,我试图做...但imagepng()的事情成功了!它确实将图像上传到数据库!非常感谢! –

+0

没有问题。如果有效,请务必检查答案是否正确。这样你就不会有人认为它还没有得到答案。 – Rasclatt