#php #javascript #html
#php #javascript #HTML
Вопрос:
Так что это, без сомнения, покажется глупым вопросом от невежественного человека, но мне было интересно, есть ли какой-нибудь простой способ изменить размер изображения до того, как пользователь его загрузит?
Я загружаю изображения из сторонней базы данных, которую я не контролирую. Мне также не разрешено кэшировать что-либо из него под их T amp; C.
Они предоставляют несколько разных размеров для каждого изображения. Но в конечном итоге я изменяю размер половины из них на своих страницах с помощью CSS.
Итак, мне было интересно, может быть, использовать php или javascript или что-то еще! (Я действительно понятия не имею, не так ли), я мог бы изменить размер этих изображений, прежде чем мои пользователи будут тратить время на загрузку гораздо больших версий.
Единственная причина, по которой я спрашиваю, на самом деле, заключается в том, что я знаю, что веб-сайт «Манчестер Юнайтед» вроде как делает это (я думаю, с помощью части Adobe), поэтому я подумал, что, возможно, там может быть что-то, что любой мог бы использовать?
http://www.manutd.com/en/News-And-Features/Football-News/2011/May/Sir-Alex-Blackburn-reaction.aspx
http://www.manutd.com/~/media/64B766EE4A37488AA65DC7B08E5ABC1B.ashx?h=179amp;la=ar-SAamp;w=480amp;rgn=0,78,1200,524 -> 18 КБ по сравнению с 160 КБ -> http://www.manutd.com /~/media/64B766EE4A37488AA65DC7B08E5ABC1B.ashx
(очевидно, мне не нужна техника обрезки)
Комментарии:
1. Вы могли бы запустить PHP-скрипт в качестве прокси. Извлеките изображение со своего сервера, измените его размер, затем отправьте своему клиенту. Тем не менее, если ваши посетители обычно подключены к широкополосному соединению, я не вижу в этом большой экономии времени. И если у вас много посетителей, вы будете изменять размер одного и того же изображения много раз.
2. Ссылка позволяет изменять размер. Я еще не разобрался с этим полностью, но измените h = 179, и вы получите другой размер. Я думаю, вам просто нужно выяснить синтаксис их ссылок.
3. Посмотрите на эту ссылку Высота: h = 80 Ширина: w = 120 регион: rgn = 0,0,1200,800 ссылка , они изменят размер и обрезку для вас. сохранено в формате png, то есть изображение размером 1,6 тыс.
4. В любом случае, спасибо всем. В данных обстоятельствах все это звучит чересчур, не так ли. В любом случае, спасибо, я кое-что узнал.
Ответ №1:
Если изображения поступают с сервера, который вы не контролируете, короткий ответ — НЕТ. Вы не можете изменить размер изображения, пока не скачаете его. Без кэширования измененной версии вы находитесь во власти стороннего сервера. Если вы не используете прокси-программу на стороне сервера, все же это, вероятно, доставляет больше проблем, чем того стоит.
Тем не менее, как я указал в комментариях, http://www.manutd.com изменит размер их изображений за вас. По ссылке h = высота, w = ширина и rgn = регион (слева, сверху, справа, снизу)
Вам нужны только буквы h и w. Если ваши h и w не соответствуют аспекту изображения, оно будет обрезано, а не искажено. посмотрите на оба из них. Изображение имеет формат 1200×800, соотношение сторон 3×2
w = 240, h = 160 3×2 (все изображение)
http://www.manutd.com /~/media/64B766EE4A37488AA65DC7B08E5ABC1B.ashx?w = 240 amp; h = 160
w = 160, h = 160 1×1 (обрезано)
http://www.manutd.com /~/media/64B766EE4A37488AA65DC7B08E5ABC1B.ashx?w = 160 amp; h = 160
После того, как я поиграю с ним еще, вы можете обойтись только шириной (w), и я предполагаю, что это также относится только к высоте. (РЕДАКТИРОВАТЬ: да, это так)
Изображение целиком, шириной 480 пикселей…
http://www.manutd.com /~/media/64B766EE4A37488AA65DC7B08E5ABC1B.ashx?w=480
ДОПОЛНИТЕЛЬНЫЕ РЕДАКТИРОВАНИЕ: Поймите, каждый раз, когда вы видите ‘?’ в URL-адресе, вы запрашиваете страницу из программы, а данные после ‘?’ являются параметрами для программы, а ‘amp;’ разделяет параметры. Сервер в manutd.com использует программу для изменения размера своих изображений, точно так же, как прокси-программа изменяла бы размер изображений для вас. Если бы вы прибегли к прокси-программе, если бы она была приличной, для этого потребовалась бы ссылка, подобная http://YourServer.host/proxyProgram.php?img=imageHost.org/imageName.jpgamp;w=240amp;h=160
приведенной ссылке, например, что существуют всевозможные серверные решения для изменения размера изображения.
Тем не менее, без кэша существует вероятность того, что вы будете изменять размер одного и того же изображения много раз, и одна только мысль об этом выводит меня из себя.
Я собираюсь прекратить редактирование прямо сейчас!
Получайте удовольствие!
Пропустить
Ответ №2:
Попробуйте использовать ImageMagick для PHP. Это позволяет изменять размер изображений на стороне сервера. Здесь есть несколько примеров
Комментарии:
1. Я согласен, ImageMagick — это трюк, если у вас есть изображения на вашем сервере. Даже ImageMagick не может изменить размер стороннего изображения, пока оно не будет загружено.
Ответ №3:
На мой взгляд, вот довольно уродливый способ это сделать:
Создайте страницу PHP, которая принимает все ваши запросы. Итак, вместо того, чтобы делать это…
<img src="http://other.domain/img.jpg" />
Сделайте это:
<img src="http://your.domain/images.php?name=img.jpg" />
Затем попросите вашу страницу PHP захватить изображение со стороннего сайта и воссоздать его в любом необходимом размере:
$newe = imagecreatetruecolor($width, $height);
$old = imagecreatefromjpeg($fullpath);
$oldSizes = getimagesize($fullpath);
imagecopyresampled($newe, $old, 0, 0, 0, 0, $width, $height, imagesx($old), imagesy($old));
header('Content-type: image/jpeg');
echo $newe;
Некоторые вещи, которые могут привести к сбою:
- Если T amp; C не разрешает кэширование изображений, они могут не разрешить вам доступ к их изображениям с помощью серверного кода.
- Вам придется скорректировать часть кода, если вы используете другие типы изображений (gif, png)
Ответ №4:
Это должно быть сделано на сервере. Используемый метод зависит от того, что вы используете на своем сервере. Если это .В сети есть встроенная функциональность для обработки изменения размера.
Ответ №5:
@ Taze хорошо на стороне сервера, но он получает изображения с другого сервера, и, похоже, вы не прочитали, что он делает и что ему разрешено делать.
теоретически вы могли бы кэшировать его (что вам запрещено) на своем собственном сервере, изменять его размер с помощью gdlib или imagemagick и передавать его пользователю, а затем удалять копию с сервера
но это противоречит правилам третьей стороны