我们目前使用另一台服务器(嗯,相同的服务器但不同的帐户和域名)为我们的网站提供图像。
目前的工作原理如下:
http://images.example.com?src=imagepath&w=300&h=500&q=75.
这会根据我们提供给网址(像素)的w=300
和h=400
自动调整图片大小。
但是,该网站适用于汽车经销商,我们并不总是想要指定宽度。有时我们需要百分比宽度,因为网站是响应的,并且,并非所有图像都是相同的尺寸开始,所以如果我们说所有图像都是700宽,它会导致失真。
是否可以让这种图像调整外部服务器的大小,但使用百分比?
我们使用Apache PHP
,并根据该汽车数据库中的条件通过目录名访问图像,例如images/ford/focus/AA136YH/image1.jpg
。
TL / DR问题:我们如何使用百分比宽度从外部PHP
服务器提供图像,而不是指定固定宽度和/或高度?
答案 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);