2017-03-28 4 views
1

ImageResizer 버전 3.4.3을 사용하여 기존 이미지에 워터 마크를 추가하려고 시도하는 Azure 기능이 있습니다. 함수는 오류없이 실행되지만 워터 마크는 적용되지 않습니다.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(); 
} 

어떤 아이디어를 워터 마크가 적용되지 않는 이유에 : 다음 코드는 here에서 함께 다음이다?

+0

4.0을 사용해 보셨습니까? 관련된 버그 수정이있을 수 있습니다. –

+0

또한 ImageLayers에 물리적 경로를 줄 수 있다고 생각지 않습니다. 그들은 가상 (MapPath 호출을 제거)해야합니다. –

+0

@NathanaelJones, 가상 경로를 사용하여 문제가 해결되었습니다. 또 다른 질문 - 이미지 크기가 3.8MB에서 1.5MB로 축소되는 이유는 무엇입니까? –

답변

0

워터 마크 플러그인에는 '~/azure/blobimage.jpg'와 같은 가상 경로가 필요합니다. 응용 프로그램 루트 또는 마운트 된 폴더 외부에있을 수있는 실제 경로는 허용하지 않습니다.

관련 문제