根据最大尺寸(字节)上传和自动调整图像大小

时间:2014-08-26 19:36:34

标签: php image upload resize

我已经从表单上传了图片,我可以根据价值和质量水平调整大小。 但我想根据最大尺寸(字节)自动调整图像大小。 所以,

IF (IMAGE_UPLOADED_SIZE > MAX_SIZE)
{
   WHILE(IMAGE_UPLOADED_SIZE > MAX_SIZE)
   {
     // MAIN CALCULTATIONS
     imagecreatetruecolor(); // CREATION NEW RESIZED IMAGE
     imagecopyresampled(); // COMPOSE THE NEW IMAGE
     IMAGE_UPLOADED_SIZE = getNewSize();
   }
}

循环有效,但它变得错误,因为我必须从" imagecreatetruecolor()"中获得新生成的已调整大小的图像的新SIZE ;使用print_r()命令返回RESOURCE#[id]。

1 个答案:

答案 0 :(得分:1)

破坏此代码的一个问题是:IMAGE_UPLOADED_SIZE和MAX_SIZE。那些应该是像$ image_size和$ max_image_size这样的变量吗?或者你用define定义了它们的常量?请看这里是什么:PHP manual - Define

如果它们是变量,那么您只需要调整代码即可。如果它们是常数,那么您的方法将无法按其编码方式工作。你不能像在While循环中那样改变常量的值。请参阅上面的链接。这是用变量调整的代码:

注意读者:此代码被删除,缺少通常应该是循环中运行的函数的一部分的参数。请参阅PHP manual中进一步解释的示例。

 while ($image_upload_size > $max_size){
    imagecreatetruecolor(); 
    imagecopyresampled(); 
    // Removed $getNewSize() what was that? Your own function?
    $image_upload_size = getimagesize('IMAGE NAME/PATH HERE');
    // Now you have the value of the new size, no resource ID issue, but its temporary
    // This while loop is about to run again and wipe it with another new value
    // ADD CODE HERE to do what you need with the new image size
 }