私はこの種のことを何度もしました。私の環境は、Visual Basic と、 FancyBox、JCrop、およびUploadifyで目的の結果を達成するために使用したテクノロジを使用する ASP.NETです。
最初に、FancyBox (FancyBox2 はまだ使用していません) をセットアップして、プレビュー領域 (私の場合は 344x270) と、uploadify を使用して画像をアップロードする場所を持つ iframe でモーダル ポップアップ ウィンドウを開きます。
画像がアップロードされ、検証され、サムネイルが作成されたら、この画像に関する情報を保持するオブジェクトを作成します。これには、ファイル名、拡張子、元の幅と高さ、および 344x270 のプレビュー (クロップボックス) 領域に合わせて画像をスケーリングするための新しい幅と高さが含まれます。
この新しい幅と高さを見つけるには、VB.NET で記述された次のコードを使用します。
Dim objImage As System.Drawing.Image = System.Drawing.Image.FromFile(path)
Dim orig_h = objImage.Height
Dim orig_w = objImage.Width
Dim cropbox_width, cropbox_height As Integer
If objImage.Width > objImage.Height Then
cropbox_width = 344
cropbox_height = (344 / objImage.Width) * objImage.Height
If cropbox_height > 270 Then
Do Until cropbox_height <= 270
cropbox_width = cropbox_width - 1
cropbox_height = (cropbox_width / objImage.Width) * objImage.Height
Loop
End If
Else
cropbox_height = 270
cropbox_width = (270 / objImage.Height) * objImage.Width
If cropbox_width > 344 Then
Do Until cropbox_width <= 344
cropbox_height = cropbox_height - 1
cropbox_width = (cropbox_height / objImage.Height) * objImage.Width
Loop
End If
End If
基本的に、ポートレートかランドスケープかを判断し、縦横比を見つけて、プレビュー (クロップボックス) 領域に合わせて縮小しようとしています。
これが決定されたら、それらをオブジェクトに追加し、シリアル化してアップロード ページ (FancyBox iframe) に送り返し、プレビュー (クロップボックス) 領域の画像パスを設定し、返されたオブジェクトから高さと幅を設定し、保存します。元の高さと幅を調整してから、JCrop を開始します。
ここから、プレビュー画像をトリミングした方法に基づいてオリジナルをトリミングするコードがある画像をトリミングできます。トリミングについて質問されていないため、このコードとテクニックについては説明しません。
アップロードやトリミングが行われないように聞こえるので、これはまさにあなたが求めていたものではないことはわかっていますが、画像を縮小するためのコードが正しい方向を示していると思いました.