0

アップロードされた画像が3000x5000ピクセルの範囲内である限り同じサイズに保たれるciを使用してギャラリーを構築しました。それらを表示すると、サムネイルをトリミングしていないので、必要に応じてサイズを変更するにはどうすればよいので、それらのリストのサイズを 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 に答える