私の写真ポートフォリオのフォトアルバムを作成しています。しかし、私は次のことに疑問を抱いています:サムネイルとフォトアルバム
サムネイルをサーバーのファイルシステムに保存するか、サムネイルイメージが要求されたときにサムネイルを動的に生成する必要がありますか?
サムネイルを保存するのは、ファイルが1回(ファイルがアップロードされたとき)に生成されたので、サーバー上の処理が少なくて済みます。しかしサムネイルのサイズが間違っていると私が決定した場合、私には問題があります。また、今は2つのファイルを保存しています(Thumbプラスオリジナル)。
次に、サムネイルに最適なサイズがありますか?私は答えは - サムネイルをどれくらい保存したいのですか?私の問題は、私のthumnailsは最大150の最大または最大150幅にリサイズされているということです。しかし、ファイルのサイズはまだ40kくらいになります。
私はこれを使用しています:
public void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider)
{
System.Drawing.Image fullsizeImage = System.Drawing.Image.FromFile(MapPath(GlobalVariables.UploadPath + "/" + originalFile));
// Prevent using images internal thumbnail
fullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
fullsizeImage.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
if (onlyResizeIfWider)
{
if (fullsizeImage.Width <= newWidth)
{
newWidth = fullsizeImage.Width;
}
}
int newHeight = fullsizeImage.Height * newWidth/fullsizeImage.Width;
if (newHeight > maxHeight)
{
// Resize with height instead
newWidth = fullsizeImage.Width * maxHeight/fullsizeImage.Height;
newHeight = maxHeight;
}
System.Drawing.Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);
// Clear handle to original file so that we can overwrite it if necessary
fullsizeImage.Dispose();
// Save resized picture
newImage.Save(MapPath(GlobalVariables.UploadPath + "/" + newFile));
}
ファイルサイズを小さくする方法はあり、高い150分の150広いとはかなり小さいです。私は約250に上がりたいですが、もし私が12の親指を見せていれば...ロードするのに時間がかかります。
ブロック情報ありがとうございます。非常に役立ちます。品質で、私はSystem.Drawing.Imageを使用しています - そしてこのオブジェクトタイプdoesn; tは言及された特性を持っています。私はビットマップを代わりに使用して、上記のプロパティを使用して、常にJpegとして保存する必要がありますか? – Craig
@cdotlisterはいあなたがより多くの考えを制御できる、より詳細なサムネイルの手順をよりよく使用してください。 – Aristos
ありがとうございます - これらのプロパティを私のビットマップで使用する方法がわかりません... BitmapObject.InterpolationModeは機能しません。 – Craig