Laravel 图片缩略图

Laravel Image thumb

我制作了一个网络应用程序,上传的照片存储在 /app/storage 中。 要显示文件,我正在使用一条路线 ex:showphoto/{id}(路径存储在数据库中)

public function showphoto($id){
     $photo = Photo::findOrFail($id);
     return $this->getFile($photo);
}
private function getFile($f){
        if($f->path){
            $file = storage_path($f->path.'/'.$f->origin_name);
            if (File::exists($file)) {
                $contents = File::get($file);
                switch($f->ext) {
                    case "gif": $ctype="image/gif"; break;
                    case "png": $ctype="image/png"; break;
                    case "jpeg":
                    case "jpg": $ctype="image/jpeg"; break;
                    case "pdf": $ctype="application/pdf"; break;
                    default:
                }
                $response = Response::make($contents, 200);
                $response->header('Content-Type', $ctype);
                return $response;
            } 
        }
    }

显示我正在使用的图像

{{ HTML::image(route('showphoto', $photo->id), $photo->getName(), array('class'=>'img-thumbnail', 'width' => '100', 'height'=>'100')) }}

问题:有些文件超过 2 MB,当我有一个文件列表时,它们的加载速度非常慢,所以在列表中我只想显示照片的缩略图。 可以创建一个不会存储在任何地方的临时拇指吗? 或者每次加载页面时都创建一个临时缩略图不是一个好主意。 提前谢谢你。

如果您要在加载页面时以某种方式处理大量大图像,您可能会遇到麻烦。所有这些额外的处理都会真正减慢一切。

您可以做的是在上传图像时为图像创建缩略图并将其存储在某处。这样,您只需加载缩略图,而不是较大的图像。

或者,如果您希望能够在页面中指定缩略图的大小,另一种解决方案是在页面加载时以指定的大小生成缩略图。您需要确保缓存这些缩略图,以便您可以在继续使用时加载它们。如果您在第一次加载页面时选择这种方法,可能需要一段时间,但之后,后续页面加载会快得多,因为它将使用预先创建的缓存图像。

在处理图像时与 Laravel 一起使用的一个很棒的包是 Intervention Image:

http://image.intervention.io/