上传后,小尺寸图像会以大尺寸显示

时间:2016-10-09 08:02:40

标签: php laravel laravel-5.2

当我上传400KB的图像时,它最终得到1.3MB

    $project = Project::findOrFail($project_id);
    $image_type = 'project_thumbnail';

    $destinationPath = 'assets/images/projects/'.$project_id;
    $filename = $request->file->getClientOriginalName();
    $filename = time().'_'.$filename;
    $extension = $request->file->getClientOriginalExtension();
    $photo = $request->file->move($destinationPath, $filename);
    $photo= Image::make($destinationPath.'/'.$filename);
    $photo->resize(1024, 683, function ($constraint) {
        $constraint->aspectRatio();
    })->save();
    $media = new \App\Media(['type'=>$image_type, 'filename'=>$filename, 'path'=>$destinationPath.'/'.$filename, 'thumbnail_path'=>$destinationPath.'/'.$filename,'extension'=>$extension]);
    $project->media()->save($media);
    return 1;

但是,如果我上传1.3MB图像文件,它根本不会改变

提前谢谢你。

EDIT1

我试过

    $photo->resize(null, function ($constraint) {
        $constraint->aspectRatio();
    })->save();

    $photo= Image::make($destinationPath.'/'.$filename)->save();
    // $photo->resize(1024, 683, function ($constraint) {
    //   $constraint->aspectRatio();
    // })->save();

但似乎没什么用。

1 个答案:

答案 0 :(得分:1)

看起来您在保存之前正在调整图像大小。

$photo->resize(1024, 683, function ($constraint) {
    $constraint->aspectRatio();
})->save();

调整大小会改变图像的大小。

所以可能会发生这样的情况:您的初始图像(400KB)的分辨率小于1024.然后您将分辨率更改为1024,这会将其大小增加到1.3MB。

然后你上传了已经有1024分辨率的1.3MB图像,因此它不会被resize()改变,并且它的大小保持不变,并且还有1.3MB。