Я использую инструмент www.imageresizing.net для .NET для создания галереи и эскизов на лету. Что действительно хорошо в этом компоненте, так это то, что вы можете повторно обрезать и изменять размеры изображений, просто изменив URL.
Теперь у меня есть изображение галереи с требуемым соотношением сторон (9: 5), которое корректно отображается ниже:
upload/289.jpg?crop=22,30,562,330&width=540&height=300
Вы заметите определенные координаты кадрирования выше 22,30,562,330 (X1,Y1,X2,Y2)
, при этом будет выделена область 22 пикселя, 30 пикселов вниз, 562 пикселя в поперечнике, 330 пикселей снизу. Таким образом, в основном область грубого кадрирования 540x300px в центре большого изображения (640x427, но это не имеет отношения к вопросу).
Теперь, как уже было сказано, это отображается хорошо и в правильном соотношении сторон. Затем я могу изменить URL-адрес для версии миниатюры, используя:
upload/289.jpg?crop=22,30,562,330&width=120&height=67
Ранее я выяснил, что 120x67 (точнее, 120,6x67 пикселей) - это правильная ширина и высота для поддержания соотношения сторон, и мои координаты кадрирования могут, очевидно, оставаться такими же, как я просто масштабирую образ. Теперь снова, когда я смотрю на это, все выглядит великолепно.
(я поместил его на серый фон, чтобы вы могли видеть границы изображения)
Однако моя проблема в том, когда я хочу выбить 10 пикселей с обеих сторон и установить ширину 100
, чтобы все получилось грушевидным. Я хочу сделать это, потому что в галерее изображений, которую я использую, мне нужно уметь вписаться в четыре изображения в поперечнике.
Теперь, если я укажу это, мое изображение будет отображаться, но в белом почтовом ящике с двумя маленькими полосами сверху и снизу, что я ценю, потому что я не добавил 10 пикселей к кадрированию слева или еще вычел 10 пикселей из мой урожай справа:
upload/289.jpg?crop=22,30,562,330&width=100&height=67
Так что, очевидно, мне нужно скорректировать мой урожай X1 (22)
и немного X2 (562)
. Тем не менее, это не так просто, так как при этом я сохраняю почтовый ящик, если я задаю 32
и 552
соответственно, что, я думаю, нужно компенсировать уменьшением ширины со 120 до 100.
Я думаю, что необходимые 10 пикселей с обеих сторон должны быть применены до масштабирования или что-то (?), Но я понятия не имею, как справиться с этим алгоритмом, и я действительно потерян здесь !!
Имеет смысл? Могут ли здесь помочь какие-нибудь волшебники по манипуляциям с изображениями / математике?