2012-10-23 93 views
1

我試圖獲取ImageGen爲圖像庫下載部分生成的縮略圖jpg的文件大小。獲取Umbraco縮略圖圖像文件大小 - umbracoBytes XSLT

我以前做過的一把umbraco 4.2,但我想更新我的XSLT和簡化它一把umbraco 4.9

4.2版本的方法:

<xsl:value-of select="emint:GetFileSize(((memberGroupFunctions:GetFileSize(concat(substring-before($mediaNode/data [@alias='umbracoFile'],'.'), '_thumb_1200.jpg')) div 1024) div 1024))" /> 

我想要做的對於版本4.9:

<xsl:value-of select="emint:GetFileSize(((memberGroupFunctions:GetFileSize(concat(substring-before(umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoFile,'.'), '_thumb_1200.jpg')) div 1024) div 1024))" /> 

我不明白爲什麼它不起作用。原始圖像被上傳到媒體部分,它被切割成各種尺寸,包括1200和2400.然後使用媒體選擇器數據類型在內容部分中選擇原始圖像。然後我將它和頁面上的「拇指」版本顯示爲可下載鏈接。該鏈接包括圖像的寬度,高度和文件大小。我無法獲得在「拇指」圖像上工作的文件大小!寬度和高度顯示。但「拇指」圖像的GetFileSize導致「錯誤解析XSLT文件」錯誤。的下載列表如何顯示

<ul> 
     <li> 
      <a href="{concat(substring-before(umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoFile,'.'), '_thumb_1200.jpg')}" title="Medium"> 
       Medium - <xsl:value-of select="emint:GetThumbailFileDimensionWidth(1200, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoHeight div 1, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoWidth div 1)"/> x <xsl:value-of select="emint:GetThumbailFileDimensionHeight(1200, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoHeight div 1, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoWidth div 1)"/> px 
      <xsl:value-of select="emint:GetFileSize(((memberGroupFunctions:GetFileSize(concat(substring-before(umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoFile,'.'), '_thumb_1200.jpg')) div 1024) div 1024))" /> 
      </a> 


     </li> 
     <li> 
      <a href="{concat(substring-before(umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoFile,'.'), '_thumb_2400.jpg')}" title="Large"> 
       Large - <xsl:value-of select="emint:GetThumbailFileDimensionWidth(2400, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoHeight div 1, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoWidth div 1)"/> x <xsl:value-of select="emint:GetThumbailFileDimensionHeight(2400, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoHeight div 1, umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoWidth div 1)"/> px 
       <xsl:value-of select="emint:GetFileSize((umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoBytes div 1024) div 1024)" /> 
      </a> 
     </li> 
     <li> 
      <a href="{umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoFile}" title="Original File"> 
       Original File - <xsl:value-of select="umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoWidth" /> x <xsl:value-of select="umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoHeight" /> px 
      - <xsl:value-of select="emint:GetFileSize((umbraco.library:GetMedia($currentPage/imageGalleryPhoto, 'false')/umbracoBytes div 1024) div 1024)" /> 
      </a> 
     </li> 
    </ul> 

例子:

  • 中 - 1200 X 898像素 - 225 KB
  • 大 - 2400 X 1797像素 - 777 KB
  • 原始文件 - 6658 x 4984 px - 10.20 MB

這是我用於寬度,高度和文件大小轉換的C#腳本:

<msxsl:script language="C#" implements-prefix="emint"> 
<![CDATA[public string GetExtension(string fileName) 
    { 
    string[] terms = fileName.Split('.'); 
    if (terms.Length <= 0) 
    { 
    return string.Empty; 
    } 
    return terms[terms.Length -1]; 
    } 

    public string GetFileName(string fileName) 
    { 
    string[] terms = fileName.Split('/'); 
    if (terms.Length <= 0) 
    { 
    return string.Empty; 
    } 
    return terms[terms.Length -1]; 
    } 

    public string GetFileSize(Decimal mbs) 
    { 
    Decimal result = Decimal.Round(mbs, 2); 
    if (result == 0) 
    { 
    result = mbs * 1024; 
    return Decimal.Round(result, 2).ToString() + " KB"; 
    } 
    return result.ToString() + " MB"; 
    } 

    public Decimal GetThumbailSizeRatio(Decimal thumbnailSize, Decimal height, Decimal width) 
    { 
     Decimal ratio; 
     if (height >= width) 
     { 
      ratio = height/thumbnailSize; 
     } 
     else 
     { 
      ratio = width/thumbnailSize; 
     } 
     return ratio; 
    } 

    public string GetThumbailFileDimensionHeight(Decimal thumbnailSize, Decimal height, Decimal width) 
    { 
     Decimal ratio = GetThumbailSizeRatio(thumbnailSize, height, width); 
     return Decimal.Round((height/ratio), 0).ToString(); 
    } 

    public string GetThumbailFileDimensionWidth(Decimal thumbnailSize, Decimal height, Decimal width) 
    { 
     Decimal ratio = GetThumbailSizeRatio(thumbnailSize, height, width); 
     return Decimal.Round((width/ ratio), 0).ToString(); 
    } 

    public string GetCentimeters(Decimal pix) 
    { 
    Decimal formula = (decimal)0.026458333; 
    Decimal result = pix * formula; 
    return Decimal.Round(result,0).ToString(); 
    }]]> 

誰能幫助?

乾杯,JV

回答

0

你能用ImageGen來生成圖像?

如果是的話,你必須安裝ImageGenerator它是生成圖像的任何大小相當有用的工具,你需要從開發部分在一把umbraco CMS安裝在

此外,還有文檔如何使用ImageGen Documentation

我希望這將有助於

+0

我用ImageGen創建縮略圖。感謝張貼雖然。 – JV10