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