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


Upload and Auto Resize an Image according to a max size (byte)

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

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]。

破坏此代码的一个问题是:IMAGE_UPLOADED_SIZE和MAX_SIZE。这些应该是$image_size和$max_image_size这样的变量吗?或者您用define声明了它们为常量?请参阅此处了解内容:PHP手册-定义。

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

读者注意:此代码已被删除,并且缺少通常应作为循环中运行的函数一部分的参数。请参阅PHP手册中进一步解释它的示例。

 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
 }