0

CI を使用したサムネイル生成などについて多くのことが書かれていることは知っていますが、私が作成したものを説明し、どのようなベスト プラクティスのアドバイスを見つけることができるかを確認したかったのです。これが私の話です…</p>

現在、ユーザーが最初にアカウントを作成した後に作成したプロジェクトに写真のコレクションをアップロードできるサイトがあります。アカウントの作成時に、サイトは 5 つの定義済みプロジェクトごとに、次の方法でユーザー用のフォルダーを生成します。

/生徒/ユーザー名/プロジェクト番号/画像/親指/

(つまり、作成済みの学生フォルダー内で、username、project_num、images、thumbs フォルダーが 5 回再帰的に作成されます。)

ユーザーがプロジェクトに画像をアップロードすると、完全な画像を project_num の画像フォルダーにアップロードし、その比率を維持する小さなサムネイルを作成するギャラリー コントローラーがあります。ここまでは順調ですね。

これらのサムネイルと完全な画像が表示されるサイトのインデックス ページで、「中サイズ」の画像のために CSS を介してサイズを変更しながら完全な画像を出力できると考えて、少し頭が混乱しました。クリックするとフルサイズの画像になります。

(明確にするために、パスは次のとおりです。サムネイルをクリックします—> ajaxを介して縮小されたフルサイズ(中サイズ)の画像を親指の上の表示領域にロードします—>中サイズの画像をクリックします—>ライトボックスを介してフルサイズの画像をロードします、またはその性質の何か。)

この時点まではすべて機能していますが、ご想像のとおり、css を使用してフルサイズの画像のサイズを変更すると、親指の縦横比が維持されないため、これらのサイズを変更する最善の方法を見つける必要があります。

考えてみると、次の 2 つの選択肢があると考えました。

  1. ユーザーがサムネイルをクリックしてajax経由で中サイズの画像をロードすると、その場で画像のサイズを変更できました。(私は、ギャラリー コントローラにメソッド 'get_image($url)' を持っています。このメソッドは、イメージ タグとそれに渡されたイメージ ソースなどを含むビューをロードするだけです。)おそらく最初にギャラリー モデルに送信して、サイズを変更できると思いました。その場でそこにいて、それをビューに送信します。私が抱えている問題は、その場でサイズを変更してエコーアウトすると、生の画像データが得られることです(申し訳ありませんが、それが正しい用語かどうかわかりません)。data_uris を使用して生データをエコー可能な形式にフォーマットしようとしましたが、成功しませんでした。この方法は可能ですか?

  2. 私が検討した 2 番目のオプションは、maintain_ratio を true に設定してユーザーが画像をアップロードしたときに、2 番目の中サイズのサムネイルを生成することでした。ユーザーがプロジェクトを削除する方法を提供する場合、削除する追加の画像セットをスキャンする必要があるため、この方法はあまり理想的ではありません。確かに大したことではありませんが、その場で中サイズの画像を生成することで回避できると思いました。

説明が長かったとしても、私の説明が明確であったことを願っています! これを処理する最善の方法について人々がどのような提案をしているのか、私は非常に興味があります.

読んでくれてありがとう。どんな提案も大歓迎です!

スティーブ K.

4

1 に答える 1

1

画像ごとに 2 回以上画像のサイズを変更するような計算上の困難なことはしたくありません。高価すぎる。

訪問者が画像をアップロードするときは、サイズを 2 回変更するだけです。親指を作り、中親指を作ります。また、アップロードされたすべての画像の記録を、project_id と user_id を外部キーとしてデータベース テーブルのどこかに保存することも考えられます。画像を削除するために「スキャン」する必要がなくなります。あなたは彼らがどこにいるか知っています。

于 2010-05-01T13:58:54.203 に答える