在我的網站上,用戶可以上傳照片。我目前壓縮並調整照片大小以確保它們不是大文件。但是這會產生不同維度的照片......這使得我認爲網站有點「醜陋」。如何在C#中使用空格填充上傳的照片?
我想確保縮略圖是方形圖像,但不是使用填充。如果縮略圖中的照片有些丟失,這沒關係。我想盡可能保持照片的逼真度,即使這意味着需要裁剪一些照片。
在我的網站上,用戶可以上傳照片。我目前壓縮並調整照片大小以確保它們不是大文件。但是這會產生不同維度的照片......這使得我認爲網站有點「醜陋」。如何在C#中使用空格填充上傳的照片?
我想確保縮略圖是方形圖像,但不是使用填充。如果縮略圖中的照片有些丟失,這沒關係。我想盡可能保持照片的逼真度,即使這意味着需要裁剪一些照片。
我寫了一些代碼來做到這一點千真萬確的事情。我選擇裁剪它,因爲在不保留寬高比的情況下調整大小看起來非常可怕。我做了農作物,然後調整大小以創建略圖圖像:
public Bitmap CreateThumbnail(Bitmap RawImage)
{
int width = RawImage.Width;
int height = RawImage.Height;
Size ThumbnailDimensions = new Size();
ThumbnailDimensions.Width = 100;
ThumbnailDimensions.Height = 100;
Rectangle cropArea = new Rectangle();
if (width > height)
{
cropArea.Width = height;
cropArea.Height = height;
cropArea.X = 0;
cropArea.Y = 0;
}
else if (width < height)
{
cropArea.Width = width;
cropArea.Height = width;
cropArea.X = 0;
cropArea.Y = 0;
}
if(width != height) Bitmap thumbnail = CropImage(RawImage, cropArea);
thumbnail = ResizeImage(thumbnail, ThumbnailDimensions);
return thumbnail;
}
這只是從左上角的作物,然後它會調整到我的縮略圖的尺寸。
而不是裁剪,我會使div或任何你把它們放在一個固定的方形大小。縮放圖像以適合該廣場內。
你會如何決定裁剪它?從左上角?右下?中央?
我可以想象你需要採取最短尺寸(無論是瓦特或^h),並使用它作爲您的維度創建裁剪後的圖像,基本上可以裁剪,然後縮放圖像。作爲修剪圖像的示例,請查看this article。還請檢查this Stack Overflow question有關圖像質量。
這是一個很好的觀點,使用裁剪設置的最短尺寸。謝謝。 – Chaddeus 2010-08-06 01:31:09
要將矩形變成方形,您需要填充,調整大小而不保留寬高比或裁剪(或組合)。
下面是一些代碼爲劃出
http://snippets.dzone.com/posts/show/1484
(我的Atalasoft工作 - 在我們DotImage照片SDK),這是
AtalaImage img = new AtalaImage("filename.jpg");
AtalaImage img2 = new CropCommand(/*point and size of crop */).Apply(img).Image;
img2.Save("filename", new JpegEncoder(quality), null);
在網站上做一次這樣的小技巧一次:如果原始圖像比較高,則從兩側裁剪等量。但是,如果原始圖像比寬度更高,則從底部收割比從頂部收割得更多,根據我的經驗,您不太可能丟失有價值的細節(例如,在肖像照片中,您會裁剪掉對象的腿,而不是他們的臉!) – Carson63000 2010-08-06 01:04:04
@ Carson63000 - 你搖滾,這是一個很好的觀點。謝謝! – Chaddeus 2010-08-06 01:36:16