2011-02-17 80 views
1

我想從原件創建大小75x75平方米的縮略圖。 縮略圖在一個維度上看起來不會拉長,因爲它不會遵循寬高比。如何生成圖像的方形縮略圖?

如果使用過Flickr,您會看到它們會生成方形縮略圖。我需要同樣的東西。

任何線索或幫助表示讚賞。

編輯:

我在.NET 4.0 C#

我找編程的方式來產生豎起大拇指。如果沒有可用的dll,則需要批量功能。

+0

添加標籤的語言或技術所使用。看來你可能會要求一個圖書館使用。 – 2011-02-17 08:02:47

回答

4

這是Codeproject

static System.Drawing.Image FixedSize(System.Drawing.Image imgPhoto, int Width, int Height) 
{ 
int sourceWidth = imgPhoto.Width; 
int sourceHeight = imgPhoto.Height; 
int sourceX = 0; 
int sourceY = 0; 
int destX = 0; 
int destY = 0; 

float nPercent = 0; 
float nPercentW = 0; 
float nPercentH = 0; 

nPercentW = ((float)Width/(float)sourceWidth); 
nPercentH = ((float)Height/(float)sourceHeight); 
if (nPercentH < nPercentW) 
{ 
    nPercent = nPercentH; 
    destX = System.Convert.ToInt16((Width - 
        (sourceWidth * nPercent))/2); 
} 
else 
{ 
    nPercent = nPercentW; 
    destY = System.Convert.ToInt16((Height - 
        (sourceHeight * nPercent))/2); 
} 

int destWidth = (int)(sourceWidth * nPercent); 
int destHeight = (int)(sourceHeight * nPercent); 

Bitmap bmPhoto = new Bitmap(Width, Height, 
        PixelFormat.Format24bppRgb); 
bmPhoto.SetResolution(imgPhoto.HorizontalResolution, 
       imgPhoto.VerticalResolution); 

Graphics grPhoto = Graphics.FromImage(bmPhoto); 
grPhoto.Clear(Color.White); 
grPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 

grPhoto.DrawImage(imgPhoto, 
    new Rectangle(destX, destY, destWidth, destHeight), 
    new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), 
    GraphicsUnit.Pixel); 

grPhoto.Dispose(); 
return bmPhoto; 

}

0

ImageMagick是一個很好的庫/圖像轉換/轉換程序。

Resizing images

+0

ImageMagick體積龐大。我已經遠離它了。它也很慢。 – kheya 2011-02-17 07:25:48

-1

如果你在windows上,你實際上可以用MSPaint做到這一點。

+0

需要編程方式。 – kheya 2011-02-17 07:27:50

0

如果您確定使用PHP,那麼this將幫助您。