2016-02-26 5 views
2

Представьте, что в статической папке вашего веб-приложения есть файл изображения размером 10 МБ.Загрузка версии с высоким разрешением с высоким разрешением с сервера (решение, отличное от javascript)

Если вы загрузили его в файл HTML с чем-то вроде этого: <img src="static/image.png"></img>, весь 10 МБ загрузится для пользователя, запрашивающего изображение.

Но что, если тег был <img src="static/image.png" height="10" width="10"></img>? То есть он изменил размер изображения на 10 пикселей на 10 пикселей (предположительно намного меньше 10 МБ). Будет ли конец пользователя по-прежнему загружать все 10 МБ? Лично я думаю, что пользователь все равно будет загружать 10 МБ. Пожалуйста, поправьте меня, если я ошибаюсь. Это мой первый вопрос.

Если я прав, хотя, что некоторые стратегии динамически миниатюры, этот вид изображения таким образом, что размер файла, загруженный в конце пользователя получает уменьшенный слишком (короткий фактически хранить отдельный файл эскиза для каждого изображения на сервере). Предположим, что это не-javascript-среда, что веб-сервер nginx, и веб-приложение построено в Django (если это имеет значение).

Является ли сохранение отдельных миниатюр единственным способом?

ответ

3
  1. Да, пользователь должен загрузить полную 10Mb.

  2. Есть несколько хороших приложений для django для обработки автоматического создания thubmnail. Я использую django-versatileimagefield. Там вы можете легко реализовать различные размеры миниатюр.

    from django.db import models 
    
    class ExampleModel(models.Model): 
        image = models.ImageField(
        'Image', 
        upload_to='images/' 
    ) 
    
    >>> from someapp.models import ExampleModel 
    >>> instance = ExampleModel.objects.all()[0] 
    >>> instance.image.thumbnail['200x200'].url 
    '/media/__sized__/images/test-image-thumbnail-200x200.jpg' 
    
    # or in templates: 
    <img src="{{ instance.image.thumbnail.200x200 }}" /> 
    
2

1: да, пользователь должен загрузить большой 10Мб и браузер будет размер (возможно, используя теневые алгоритмы изменения размера это выбор)

2: Я бы генерировать на миниатюру мой сам во время загрузки и хранения Это. Если вы создадите его на лету, это может быть медленным, и вы в конечном итоге выберете дрянной алгоритм, а также сможете использовать большую часть сервера процессора.

1

Да, даже если вы измените размер изображения в HTML, изображение все равно будет 10 МБ. Я бы также создавал миниатюры разных размеров и загружал на сервер, а не сервер, делающий изменение размера. Вы также можете проверить следующий URL для альтернативных вариантов https://www.smashingmagazine.com/2014/05/responsive-images-done-right-guide-picture-srcset/

Смежные вопросы