2011-12-26 47 views
1

我希望这是一个简单的一个,我使用MySQL和PHP使用此代码上传图片作为BLOB类型:上传到mySQL并使用SimpleImage PHP?

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
    { 

    $fileName = $_FILES['userfile']['name'];  
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 

    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    fclose($fp); 

    if(!get_magic_quotes_gpc()) 
    { 
     $fileName = addslashes($fileName); 
    } 

这是所有工作正常,插入到数据库和一切。然后,我希望使用SimpleImage:http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/在上载图像之前对图像执行一些调整大小和压缩的工作。我看不出如何结合说:

include('SimpleImage.php'); 
     $image = new SimpleImage(); 
     $image->load($_FILES['userfile']['tmp_name']); 
     $image->resizeToWidth(150); 
     $image->output(); 

用我现有的代码,我想我需要做的就是$内容成为$的形象,但我已经尝试了一段时间,并不能找到一个办法。任何帮助非常感谢。

快乐的圣诞节对那些喜欢圣诞节和TIA的人来说。

回答

1

您正在输出调整大小的图像到浏览器(::output()),但你没有保存它。如果要将其存储在数据库中,则需要先更改临时文件,例如通过使用SimpleImage::save()函数。

接下来,您要在上传之前编写想要在浏览器中调整图片大小的功能。这不能用PHP完成,但只有支持JavaScript的浏览器才能完成。另外,PHP端的上传处理可能会有所不同。但我不确定是否真的意味着图像在上传之前调整大小

另一个想法我有使用的输出缓冲器:

if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{  
    $fileName = $_FILES['userfile']['name'];  
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 
    $image = new SimpleImage(); 
    $image->load($_FILES['userfile']['tmp_name']); 
    $image->resizeToWidth(150); 
    ob_start(); 
    $image->output(); 
    $content = ob_get_clean(); 

    $content = addslashes($content); 
    ... 
+0

保存为临时图像,然后做调整大小等它,它是你的意思吗? – 2011-12-26 20:24:38

+0

那么如果它是一个文件上传,你已经有了临时文件,所以可能你可以重用它(PHP可能不允许,但如果我是你,我会测试它是否工作)。因此调整'$ _FILES ['userfile'] ['tmp_name']'并将其保存为相同的文件名。或者,使用输出缓冲区和'output()',然后将缓冲区内容读入'$ content',而不是读取tempfile。 – hakre 2011-12-26 20:27:03

+0

TY我会给它一个旋转,让你知道! – 2011-12-26 20:38:02