2011-01-21 31 views
1

我希望創建圖像生成的幫手。我們將把它添加到C#解決方案中。然而,我不是後端開發人員,所以我只是創建一個虛擬示例並用我自己的話在這裏解釋:-)動態生成圖像的算法幫助

更新:我需要幫助,是如何計算每個下面的情景。例如。如果我有一個60x60的縮略圖佔位符,並且原始圖像是400x300,則必須將300設置爲60,並相應地更改400。

的幫手會是這個樣子:

HelperName('OriginalImageUrl', 'FileName', X, Y, M) 

M爲模式,我的猜測是需要決定是否應該使用寬度或高度從..計算這些場景:

Thumnails(方形):寬度和高度是相同的,所以它應該使用最短的圖像尺寸。

ImagePlaceholder(大多爲長方形): 靜態高度/寬度。圖像需要填充高度/寬度,所以不會是佔位符中的任何空白區域。其中一個維度過多的部分將被裁剪。如果寬度!=高度以確定其是否爲正方形,可能可以與縮略圖組合使用。

PhotoWrapper: 最大高度/寬度。整個圖像將被調整以適應這些比例。沒有裁剪,只是基本調整大小以適應2個給定的容器尺寸。

如果有人能夠幫助我,或者知道我可以使用的插件,那就太棒了。

+0

目前還不清楚問題是什麼? – 2011-01-21 06:54:38

+0

你不確定什麼?如何使界面操縱這個?還是具體實施?此外,我們不是在這裏做你的支持,所以你應該至少嘗試搜索並嘗試自己制定解決方案。那麼如果你有具體的問題問我們。 – Euphoric 2011-01-21 07:52:48

回答

2

您可以計算比例因子,然後計算輸入/輸出矩形。如果是這樣(沒有測試):

配件:

double scaleX=(double)targetWidth/(double)originalWidth; 
double scaleY=(double)targetHeight/(double)originalHeight; 

double scaleToFit=Math.Min(scaleX,scaleY); 

double newWidth=scaleToFit*originalWidth; 
double newHeight=scaleToFit*originalHeight; 

double borderX=(targetWidth-newWidth)/2; 
double borderY=(targetHeight-newHeight)/2; 

Rect InputRect=new Rect(0,0,originalWidth,originalHeight); 
Rect OutputRect=new Rect(borderX,borderY,targetWidth-2*borderX,targetHeight-2*borderY); 

灌裝:

double scaleX=(double)targetWidth/(double)originalWidth; 
double scaleY=(double)targetHeight/(double)originalHeight; 

double scaleToFill=Math.Max(scaleX,scaleY); 

double oldWidth=targetWidth/scaleToFill; 
double oldHeight=targetHeight/scaleToFill; 

double cropX=(originalWidth-oldWidth)/2; 
double cropY=(originalHeight-oldHeight)/2; 

Rect OutputRect=new Rect(0,0,targetWidth,targetHeight); 
Rect InputRect=new Rect(cropX,cropY,oldWidth,oldHeight); 

我認爲有阻擊器內搭的兩個圖像的功能,以及兩個矩形。使用其中之一。

0
  1. 負載從URL中的圖像轉換爲byte[]
  2. 創建一個從byte[]
  3. Image操縱Image
  4. 保存Image到磁盤和服務的網址或通過網絡處理直接流

byte[]可替換爲Stream