0

私は次のように正常に動作しています:

  1. ユーザーが画像をアップロードすると、画像はimagecopyresampledとimagejpeg(比率を維持)を使用してサイズ変更され、トリミングDIVに適合します。

  2. 次に、ユーザーはJCropを使用して画像をトリミングし、次にサイズ変更された上の画像をimagecopyresampledとimagejpegを使用して5つの必要なトリミングサイズにカットします。


私が見つけた問題は、サイズ変更された画像からトリミングすると、多くの場合、より大きく、より良い品質である非常に元の画像を利用しないことです。

そのため、DIVに適合する画像を表示したいのですが、最高の品質を得るために、非常に元の画像からトリミングします。

トリミングを元の画像に変更しただけでは、サイズが異なるため、画像のトリミングが間違った部分になります。これは明らかだと思います。差分サイズの画像。


JcropのDIVに適合する画像を表示し、実際には元の画像を切り抜くにはどうすればよいですか?

私がテストしているアイデア:

  • 元の画像をDIVに表示します(phpではサイズ変更されませんがCSSでサイズ変更されます)。これが何か違いを生むかどうかはわかりません。

  • 正しい作物を得るために、いくつかの数学ベースの方程式を使用してみてください。私が現在これをどのように行うかわからない。

アイデアは素晴らしいでしょう...thx

4

1 に答える 1

1

フルサイズの画像サーバー側で作業する必要がある場合は、個人的には数学ベースのソリューションを使用します。ブラウザーで直接または CSS を介して再スケーリングすることは、理想的な IMO ではなく、ブラウザーによって大きく異なります。数学ベースのオプションを使用すると、小さい画像のトリミングで座標を計算し、それを拡大して元の画像の適切な部分を取得できます。

余談ですが、(アップロードを許可する画像のサイズと画像の種類によっては) PHP 側でのコピーとサイズ変更は、CPU とメモリを大量に消費することに気付くかもしれません。たとえば、高解像度でおよそ 1024 x 768 の png ファイルは、サイズを変更するだけで最大 60MB から 80MB の RAM を使用する可能性があり (png ファイルの圧縮による画像の再サンプルごとに)、それはどの PHP 画像操作モジュール ( ImageMagickなど) を使用します。PHP サーバー エンドからの画像のアップロードを処理する完全な方法はありません (タスクで大量のメモリと CPU を投入する以外に)。ただし、アップロード前にクライアント側でサイズ変更する優れた jQuery ソリューションがいくつかあります (例: Plupload)。など)、つまり、サーバー側で縮小サイズの画像のみを操作することになります。優れた JQuery クライアント側のクロッピング スクリプトもいくつかあります。いずれにせよ、PHP と jQuery の組み合わせが最良の IMO です。

于 2012-09-21T00:41:39.400 に答える