2017-03-28 8 views
1

ImageResizerバージョン3.4.3を使用して既存のイメージにウォーターマークを追加しようとしているAzure関数があります。関数はエラーなく実行されますが、ウォーターマークは適用されません。ここでは、コードhereからに沿って、次、次のとおりです。ImageResizerウォーターマークが表示されない

private static void ApplyWatermark(Stream inputStream, string blobName) 
{ 
    var imageConfiguration = Config.Current; 
    var plugin = imageConfiguration.Plugins.Get<WatermarkPlugin>(); 
    if (plugin == null) 
    { 
     plugin = new WatermarkPlugin(); 
     plugin.Install(imageConfiguration); 
    } 
    plugin = imageConfiguration.Plugins.Get<WatermarkPlugin>(); 
    var imageLayer = new ImageLayer(imageConfiguration) 
    { 
     Path = HostingEnvironment.MapPath(_configuration.Get<string>("BadgeUrl")), 
     Align = ContentAlignment.MiddleCenter 
    }; 
    plugin.NamedWatermarks["badge"] = new Layer[] 
    { 
     imageLayer 
    }; 
    inputStream.Position = 0; 
    var outputStream = new MemoryStream(); 
    imageConfiguration.CurrentImageBuilder.Build(inputStream, outputStream, 
     new ResizeSettings("watermark=badge")); 
    outputStream.Position = 0; 
    _blobStorageRepository.AddorUpdateAsync(_configuration.BlobStorageContainer, 
     blobName, outputStream).Wait(); 
} 

すべてのアイデアは、透かしが適用されていない理由として?

+0

4.0を試しましたか?関連するバグフィックスがあった可能性があります。 –

+0

また、ImageLayersに物理パスを与えることはできません。それらは仮想である必要があります(MapPath呼び出しを削除します)。 –

+0

@ NathanaelJones、仮想パスを使用して問題を修正しました。もう1つの質問 - 画像サイズが3.8MBから1.5MBに縮小する理由 –

答えて

0

透かしプラグインには、 '〜/ azure/blobimage.jpg'のような仮想パスが必要です。アプリケーションルートまたはマウントされたフォルダーの外にある物理パスは受け入れません。

関連する問題