0

我已经使用 ci 建立了一个画廊,只要上传的图像在 3000x5000 像素范围内,它就会保持相同的大小。在显示它们并且由于我没有裁剪缩略图时,我如何在需要时调整它们的大小所以说我想将它们的列表重新调整为 150x150 我该怎么做?

我按照指南 http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

问题是在加载库时,它希望我指定每个图像的完整配置信息。所以假设我将变量加载到控制器中以显示在视图中,加载时它看起来像这样:

foreach($gallery as $img)
{
   echo "<div>";
   echo "<img src='" . $this->img_lib->resize($img->imagepath, 150, 150) . "'>";
   echo "</div>";

}

ps:调整大小时图像会保存吗?因为我不想要那个。

更好的解决方案:http: //www.matmoo.com/digital-dribble/codeigniter/image_moo/

4

2 回答 2

0

我知道如何在 ci 之外做到这一点。本质上,img“src”需要等于一个 php 脚本,或者被 htaccess 拦截,然后将其重定向到一个 php 脚本。

你可以尝试这样的事情:

foreach($gallery as $img)
{
   echo "<div>";
   echo "<img src='/imageResize.php?path=" . $img->imagepath . "'>";
   echo "</div>";

}

文件:imageResize.php

$path = $_REQUEST['path'];
$this->img_lib->resize($path, 150, 150);

根据您网站的文件夹结构,最好只传递文件名而不是完整路径。更好的是使用 .htaccess(我在我们的 CMS 中使用)来截取图像并即时调整大小/裁剪。例如<img src="/path/to/image.jpg?w=150&h=150" />

这是否有助于提供一些方向?

在您的另一个问题上,除非您指定它,否则不会将物理文件保存在服务器上。

于 2013-03-10T02:33:47.137 回答
0

@SaRiD 的答案是正确的。但是,它不一定必须在 CI 之外。您可以将图像源指向负责调整大小并提供图像的控制器方法。

在此方法中,您还需要使用正确的标头向浏览器识别图像资源。

您声明您不想保存缩略图。这显然取决于应用程序的需要。您可以将其设置为向浏览器提供先前裁剪和保存的缩略图(如果存在)(来自先前的请求),而不是每次都创建和提供缩略图 - 这将为您节省一些 CPU 周期。

于 2013-03-10T03:44:29.817 回答