Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получают мини картинки для больших?

408
07 июня 2009 года
Lei fang
265 / / 01.10.2005
Здравствуйте. Задался таким вопросом...
вот почти на любом сайте обоев есть кучи картинок. когда пользователь кликает по маленькой картинке, то открывается большая. уже настоящая.
Как это устроено? неужели они длч каждой картинки хранят еще и уменьшенную в размерах копию?
Думаю что можно как-то получить программно уменьшенную по размеру копию, но как?
Искать в гугле даже не знаю что... "как уменьшить картинки", "получить маленькую картинку из большой" не катит, ибо я знаю как это делается в редакторах :D а объяснить поисковику что мне надо я не могу
399
07 июня 2009 года
KIV
432 / / 20.01.2009
Можно с помощью PHP (при наличии специального расширения). Поищи "Изменение размера картинки на PHP".
5
08 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Lei fang

Как это устроено? неужели они длч каждой картинки хранят еще и уменьшенную в размерах копию?
Думаю что можно как-то получить программно уменьшенную по размеру копию, но как?


Именно хранят уменьшенные копии картинок. Операция уменьшения изображения относительно длительна и серьезно нагружает процессор при большом количестве изображений. Посему после загрузки картинки на сервере создается файл-превьюшка и впоследствии именно он отдается.

Уменьшить изображение можно с помощью GDI+, где-то на форуме недавно была темка про сохранение пропорций при уменьшении изображения - Der Meister несложный алгоритм расчета подкинул.


Товарищ KIV, вы вы заголовок раздела пробовали читать?

399
08 июня 2009 года
KIV
432 / / 20.01.2009
Я не говорю, что надо картинки на лету уменьшать. Можно и при закачке. Я только сказал, что это возможно с помощью PHP.
5
08 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: KIV
Я только сказал, что это возможно с помощью PHP.


Зачем использовать PHP, при том еще неизвестно какой модуль, который нужно искать, если тут под боком есть GDI+ и пространство имен System.Drawing с классами Graphics и Bitmap? Плюс ко всему еще интерпретатор PHP надо как-то из CLR запустить, учитывая, что мы в ASP.NET наверняка хостимся на IIS-е и дочерние процессы оттуда стартовать проблематично.

408
09 июня 2009 года
Lei fang
265 / / 01.10.2005
О ясно... как не экономно по отношению к свободному месту :O

Ну а я с учетом того, что хостинг не у меня на компе и ничего про лимиты использвания проца там не написано, решил сделать так:
Код:
private void ShowThumb(string FileName)
    {
        Response.Clear();

        System.Drawing.Bitmap bt = new System.Drawing.Bitmap(Server.MapPath(FileName));
        System.Drawing.Image img = bt.GetThumbnailImage(100, (100 * bt.Height) / bt.Width, delegate {return false;}, IntPtr.Zero);

        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        byte[] bytes = ms.ToArray();

        Response.ContentType = img.RawFormat.ToString();
        Response.OutputStream.Write(bytes, 0, bytes.Length);

        Response.End();
    }


Грузится картинки заметно медленно. так сказать по одной штуке появляются, но сойдет :P
5
09 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Lei fang
Грузится картинки заметно медленно. так сказать по одной штуке появляются, но сойдет :P

Неужели дополнительных 20-80кб для каждой превьюшки желко? :rolleyes:
Уже при десятке параллельных запросов веб-сервер будет тупить как пьяная старушка.

14
10 июня 2009 года
Phodopus
3.3K / / 19.06.2008
Кстати во многих Джпегах превьюшка по-дефолту уже внутри
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог