如何从宽度为百分比的外部服务器提供图像? (PHP)

时间:2014-04-30 07:14:23

标签: php html css image responsive-design

我们目前使用另一台服务器(嗯,相同的服务器但不同的帐户和域名)为我们的网站提供图像。

目前的工作原理如下:

http://images.example.com?src=imagepath&w=300&h=500&q=75.

这会根据我们提供给网址(像素)的w=300h=400自动调整图片大小。

但是,该网站适用于汽车经销商,我们并不总是想要指定宽度。有时我们需要百分比宽度,因为网站是响应的,并且,并非所有图像都是相同的尺寸开始,所以如果我们说所有图像都是700宽,它会导致失真。

是否可以让这种图像调整外部服务器的大小,但使用百分比?

我们使用Apache PHP,并根据该汽车数据库中的条件通过目录名访问图像,例如images/ford/focus/AA136YH/image1.jpg

TL / DR问题:我们如何使用百分比宽度从外部PHP服务器提供图像,而不是指定固定宽度和/或高度?

3 个答案:

答案 0 :(得分:1)

您将以某个预先确定的最大大小从服务器加载图像,然后让CSS进行重新调整大小。你的HTML看起来像这样:

<img src="http://images.example.com?src=imagepath&w=300&h=500&q=75" class="responsive" />

你的CSS看起来像这样:

.responsive {
    width: 50%;
    height: auto;
}

这会将图像调整为50%宽度,并根据原始高宽比设置高度。

答案 1 :(得分:0)

我会将这个css标记用于图像

img {

width:100%;

}

并让上下文引导图像的适当大小。对于上下文,我的意思是包含图像的父div

答案 2 :(得分:0)

我建议CSS像其他答案一样;如果您不想这样做,请使用GD Lib,但请记住,每次请求图像时都会使用一些CPU资源。

如果您无法使用CSS,请使用如下之类的脚本,但使用Memcached或光盘存储来缓存缩放图像

GD Lib调整大小:

<?php
$filename = $_GET['src'];
$percent  = intval($_GET['q']) / 100;

if (!file_exists($filename)) {
    die('image does not exist');
}

list($width, $height) = getimagesize($filename);
$newWidth  = $width * $percent;
$newHeight = $height * $percent;

$scaled = imagecreatetruecolor($newWidth, $newHeight);
$source = imagecreatefromjpeg($filename);

imagecopyresized($scaled, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

header('Content-Type: image/jpeg');
imagejpeg($scaled);
imagedestroy($scaled);