0

私はユーザーが写真をアップロードできるサイトを持っています。私は写真をどう扱うかわかりません。大きな写真からサムネイルを作成するには、幅と高さのサイズを変更するだけですか?それとももっと良い方法がありますか?サムネイルに高解像度の写真のサイズを変更するにはどうすればよいですか?

あなたが私にあらゆるリソースを教えたり、何かヒントを与えてくれれば、それは素晴らしいことです。

Ruby on Railsを使用しています。私は自分自身でそれをやる方法を学びたいので、私は本当にこのために宝石を望んでいません。

+1

「私が画像について知りたいことはすべて」は、あまりにも問題があるので、本には合わないでしょう。 –

+0

タイトルについては十分に公平ですが、問題はより具体的でした。 –

+0

Paperclip Gemを試してみてください、私はそれを言いました。 –

答えて

3

このうちのいくつかについては、「自分でやる方法を学ぶ」は重要な取り組みになるでしょう。たとえば、イメージのサイズ変更。先に進んで、イメージのサイズを変更し、ソースコードを調べるオープンソースライブラリ(宝石など)を見つけてください。あなた自身で行うことは不可能ではありませんが、そのようなことの多くは、前に来た専門知識に基づいて構築されています。他の誰かが作成したツールを使用することには何も問題はありません。やって

うまくいけば、あなたを助けるためにいくつかのポイント:

  1. ゴーあなたがサポートする画像フォーマットのホワイトリスト方式と。ユーザーが画像と呼ばれるものをアップロードできるようにしないでください。
  2. サポートしている各形式は、メタデータ用に独自の標準(複数の場合もある)を持つ予定です。データの卸売りを取り除くことは良い考えであるかもしれないし、そうでないかもしれない。たとえば、jpegはEXIFデータにその向きを含むことができ、それを取り除くと画像を効果的に回転させることができます。ジオタグなどの特定のフィールドは、ユーザーのプライバシーなどを守るために取り除きたいかもしれません。また、既存の図書館を調べて、それがどのように行われているかを見てください。
  3. DO NOTイメージの種類を判断するためにファイル名の拡張子を暗黙的に信頼します。実際にはイメージではない悪意のあるファイルを作成し、疑わしいホストにイメージとして渡し、そのファイルをイメージとして処理しようとすると、ホスト上のセキュリティ上の欠陥を効果的に開くことが可能です。 Ruby hereでファイルの種類を判断する際に質問がありましたが、その件についてさらに多くの情報があるはずです。
+0

ありがとう。非常に有益。ファイルをアップロードするときのパラメータの一部はコンテンツタイプです。たとえば、 "@ content_type =" image/jpeg ""と表示されます。これは信頼できませんか? –

+0

@GreenRails:それは信頼できるはずですが、私はユーザーの入力を検証する際には妄想的な傾向があります。私は他の人がいると確信していますが、ここでは主題に関する.NETの議論があります:http://forums.asp.net/t/1331793.aspx – David

2

Davidはよく質問に答えましたが、私はあなたの質問に関するいくつかのより具体的な情報を提供できるかもしれないと考えました。

RubyのImageMagickラッパーであるRMagickと組み合わせたPaperclip gemを使用してください。後処理オプションを設定して、複数のリサイズを作成することができます。

実際にそれをやりたいのであれば、実際の宝石をhttps://github.com/thoughtbot/paperclipでチェックアウトすると、その作者の仕組みがわかります。 Ruby on Railsの背後にある考えの一部は、DRTW(Do not Reinvent the Wheel)です。そこにあるものを利用してそれを構築してください。それはあなたに時間を節約し、longrunでより多くを行うことを可能にします。

0

代替などhttp://resizer.coなどのサードパーティのサービスを使用することです(私が所属していないです)

言って、あなたのサイトから画像へのURLを置き換えます。次で

http://example.com/images/abc123.jpg 

(用200×200画像)

http://www.resizer.co?image=http://example.com/images/abc123.jpg&w=200&h=200 

あなたは歪みの問題に遭遇することと「アスペクト比」は維持されていないが、それは良いスタートである可能性があります。

関連する問題