Алгоритм ресайза картинок

programmer_2006

Новичок
Добрый день! Мне достался фото-проект по наследству. Проект был написан на java и исходного кода нет.
Есть данные, стили, скрипты, фотки и т.д.
Сейчас пытаюсь понять по какому алгоритму происходит уменьшение картинок при загрузки пользователем.

1. Вариант
963h660c_c76efd.jpg -оригинал
w640h439c_c76efd.jpg
w200h200_c76efd.jpg
w200h150c_c76efd.jpg
w200h137c_c76efd.jpg
w100h100_c76efd.jpg
w100h69c_c76efd.jpg
w75h51c_c76efd.jpg
w50h50c_c76efd.jpg

2. Вариант
w1000h427c_378f6e.jpg
w640h273c_378f6e.jpg
w200h200_378f6e.jpg
w200h150c_378f6e.jpg
w100h100_378f6e.jpg
w100h43c_378f6e.jpg
w75h32c_378f6e.jpg

3. Вариант
w1128h627c_3b7c4e.jpg
w1000h556c_3b7c4e.jpg
w640h356c_3b7c4e.jpg
w200h200_3b7c4e.jpg
w200h150c_3b7c4e.jpg
w100h56c_3b7c4e.jpg
w75h42c_3b7c4e.jpg

4. Вариант
w561h640c_9f8cbd.jpg
w421h480c_9f8cbd.jpg
w200h200_9f8cbd.jpg
w88h100c_9f8cbd.jpg
w48h55c_9f8cbd.jpg

В базе хранится только название и ширина/высота оригинальной картинки.

Мне предстоит делать похожие копии.

Сейчас стоит задача сформировать путь к картинке нужного разрешения

Например для 1. Вариант
<img alt="" width="200" height="137" src="/preview/134/w200h137c_c76efd.jpg" />
А зиместно мне только c76efd.jpg и w=963 и h=660

Буду очень благодарен за помощь. Спасибо!
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
С чем _конкретно_ у тебя возникли трудности?
 

programmer_2006

Новичок
Не врублюсь как они получают все нужные размеры.
По идее они проверяют что больше w или h, далее
if (w/h > 0) - уменьшаем по w т.е. 640, 200 (несколько копий в зависимости от чего то, наверно от h), 100, 75, 50

Но это прокатывает для 1 и 2 случае. В третьем случае уже есть w 1000 сомнительно, что бы в коде были прописаны все варианты: 640, 800, 1000, 1250, 1400, 1600, 2000 и т.д.
В вариант 4 там уже другие цифры.

Еще есть Вариант 5 (квадрат)

900*900
800*800
480*480
200*200
200*150
100*100
55*55

Скорее все они получают какой то коэффициент, ведь при построении пути к картинке, манипуляций по уменьшению не происходит, а известно лишь w и h оригинала и отталкиваясь от них получается w200h137 и делается ссылка.

Запутался я.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Еще есть Вариант 5 (квадрат)
Круто!!11111 с квадратом теперь все стало ясно!

w200h137 и делается ссылка
Ну сделай свой алгоритм.
Я не пойму, что ты хочешь услышать, написав этих 2 поста.

Грузи разноразмерные изображения.
Методом тыка пробуй понять что как да по-чему.

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

programmer_2006

Новичок
Мне нельзя делать свой алгоритм, мне надо понять существующий. Генерация на лету... возможно, но мне это не поможет. У меня гигабайты существующих картинок к которым надо строить пути ))
Я думал, может кто делал нечто подобное или может предположить алгоритм. Я делал только генерацию thumb, а тут немного сложнее.
 

AmdY

Пью пиво
Команда форума
programmer_2006
вот на лету http://dklab.ru/lib/HTTP_ImageResizer/

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

programmer_2006

Новичок
Я отталкивался от того, что у меня есть. Папки с картинками и запись в базе. Да копии генерятся на лету, для некоторых картинок мало копий.
Если обратить внимание на названия w100h100_378f6e.jpg и w100h43c_378f6e.jpg то можно заметить отсутствие буквы "с" в первом случае. Т.е. Скорее всего при загрузке картинки, создается две копии на 100 и на 200 если есть возможность, а остальные формируются на лету.
Получается, мне нужно отталкиваясь от размера сгенерить картинку.
 

KorP

Новичок
А не проще открыть сайт (раз проект рабочий) и посмотреть на картинки - в каких размерах они там представлены!? Может там половина - мусор и не использовались!?
 

programmer_2006

Новичок
Так и буду делать. Я решил не парится с теми привьюхами которые есть, буду генерить свои на лету и добавлять новые копии по мере работы над проектом.
 
Сверху