1

画像ギャラリーのダウンロード セクションで ImageGen によって生成されたサムネイル jpg のファイル サイズを取得しようとしています。

以前に 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 ピクセル - 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

4

1 に答える 1

0

ImageGenを使用して画像を生成できますか?

はいの場合、ImageGeneratorをインストールする必要があります。これは、任意のサイズの画像を生成するのに非常に便利なツールです。Packages の Developer セクションから Umbraco CMS にインストールする必要があります

また、ImageGen Documentationの使用方法に関するドキュメントもあります。

これが役立つことを願っています

于 2012-10-23T15:28:18.840 に答える