图像上传,分辨率检查,裁剪和预览。 PHP

时间:2010-10-07 09:52:39

标签: php jquery upload preview

我正在寻找上传图片的解决方案,检查分辨率是否有必要裁剪然后再预览图像然后再打印到画布上。

我已经找到了很多这方面的例子,但显然没有什么是直截了当的,而且我不想扯掉别人的工作。

ASP不是一个选项,因为该网站使用PHP并且位于'nix框。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:1)

基本上,该文件需要POST到您的PHP脚本。您可以使用HTML表单(input type='file')或jQuery background uploaders执行此操作。上传默认存储在Web服务器的临时目录中,通过查看phpinfo()的输出可以找到当前目录。

接下来检查$_FILES全局特定move_uploaded_file(),您可以从$ _FILES数组中的type键找到图像类型,尽管可以在客户端操作它可能最好手动检查文件类型using magic byte functions

上传文件后,您需要对其进行操作。你可以使用GDImageMagick,你的PHP版本可能没有内置ImageMagick,GD很常见。我对GD更熟悉,所以我建议你查看函数imagecreatefromjpeg() / png / gif& imagecopyresampled(),可以裁剪和重新取样。要确定是否需要裁剪/调整大小,可以检查宽高比。这是我掀起的一个功能:

function fixRatio($x, $y, $ratio) {
    $ratio = round($ratio,6);
    $iRatio = round($x / $y, 6);
    if ($iRatio > $ratio) {
        $x = ceil($y * $ratio);
    } else if ($iRatio < $ratio) {
        $y = ceil($x * (1 / $ratio));
    }
    return array('x' => $x, 'y' => $y);
}

您可以输入宽度,高度和宽度。期望的宽高比&amp;这将吐出一个包含更正尺寸的数组。最好通过将所需高度除以所需宽度来指定比率,例如, fixRatio($x, $y, 640/480)。然后,您可以使用该信息裁剪图像w / imagecopyresampled(),同时您可以指定目标宽度&amp;高度。因此,如果一切都必须是640x480,那么您可以在调用imagecopyresampled()时指定。然后,您可以使用iamgejpeg() / gif / png将图像作为文件输出到服务器上的公共目录。由于它是公开的,您可以通过URL引用它,不论是HTML表单,要求用户确认他们是否喜欢他们所看到的内容或into a canvas element