使用以下用于上传图像的PHP代码上传时缩小图像大小

时间:2014-09-12 03:35:25

标签: php image uploading

尝试使用以下代码将图片上传到服务器 以下是使用下面给出的代码完成的

  • 上传文件重命名
    我需要的是我需要使用以下代码缩小图像尺寸

这是代码

 $file_name = $HTTP_POST_FILES['ufile']['name'];
 $random_digit = md5(rand() * time());
 $new_file_name = $random_digit . $file_name;
 $path = "upload/" . $new_file_name;
 if ($ufile != none) {
    if (copy($HTTP_POST_FILES['ufile']['tmp_name'], $path)) {
        echo "Successful<BR/>";
        echo "File Name :" . $new_file_name . "<BR/>";
        echo "File Size :" . $HTTP_POST_FILES['ufile']['size'] . "<BR/>";
        echo "File Type :" . $HTTP_POST_FILES['ufile']['type'] . "<BR/>";
    } else {
        echo "Error";
    }
 }

如何使用给定代码缩小图像大小

1 个答案:

答案 0 :(得分:6)

当然,它运作正常。我在PHP中使用这个类:

<?php

function thumbnail( $img, $source, $dest, $maxw, $maxh ) {      
    $jpg = $source.$img;

    if( $jpg ) {
        list( $width, $height  ) = getimagesize( $jpg ); //$type will return the type of the image
        $source = imagecreatefromjpeg( $jpg );

        if( $maxw >= $width && $maxh >= $height ) {
            $ratio = 1;
        }elseif( $width > $height ) {
            $ratio = $maxw / $width;
        }else {
            $ratio = $maxh / $height;
        }

        $thumb_width = round( $width * $ratio ); //get the smaller value from cal # floor()
        $thumb_height = round( $height * $ratio );

        $thumb = imagecreatetruecolor( $thumb_width, $thumb_height );
        imagecopyresampled( $thumb, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height );

        $path = $dest.$img."_thumb.jpg";
        imagejpeg( $thumb, $path, 75 );
    }
    imagedestroy( $thumb );
    imagedestroy( $source );
}

&GT;

imagejpeg( $thumb, $path, 75 );

是您在上传后想要的图像大小和质量的位置。

使用PHP脚本调用:

if( isset( $_FILES['img-content'] ) ) {
$img = str_replace( " ","_",$_FILES['img-content']['name'] );
move_uploaded_file( $_FILES['img-content']['tmp_name'], "../../images/content/".$img );
$source = "../../images/content/";
$dest = "../../images/thumb/";
thumbnail( $img, $source, $dest, 480, 400 );