C# 诺基亚图像处理SDK v1.2.115.0 HDR示例中缺少EditingSession和FilterFactory
我试图在我的项目中使用,但SDK v1.2.115.0中似乎不再支持C# 诺基亚图像处理SDK v1.2.115.0 HDR示例中缺少EditingSession和FilterFactory,c#,windows-phone-8,blending,nokia-imaging-sdk,lumia-imaging-sdk,C#,Windows Phone 8,Blending,Nokia Imaging Sdk,Lumia Imaging Sdk,我试图在我的项目中使用,但SDK v1.2.115.0中似乎不再支持EditingSession和FilterFactory类 原始代码 WriteableBitmap toneMap1 = new WriteableBitmap(CapturedImage.PixelWidth, CapturedImage.PixelHeight); using (EditingSession editsession = new EditingSession(image1.AsBitmap())) usin
EditingSession
和FilterFactory
类
原始代码
WriteableBitmap toneMap1 = new WriteableBitmap(CapturedImage.PixelWidth, CapturedImage.PixelHeight);
using (EditingSession editsession = new EditingSession(image1.AsBitmap()))
using (EditingSession blendSession = new EditingSession(image1.AsBitmap()))
{
// Create the blurred version of original image
editsession.AddFilter(FilterFactory.CreateBlurFilter(BlurLevel.Blur1));
// Perform the difference between the original image and the blurred copy
editsession.AddFilter(FilterFactory.CreateBlendFilter(blendSession, BlendFunction.Difference));
// Create the Laplacian of the original image using the emboss filter
blendSession.AddFilter(FilterFactory.CreateEmbossFilter(1.0f));
// Add the result of blur with emboss filter
editsession.AddFilter(FilterFactory.CreateBlendFilter(blendSession, BlendFunction.Add));
// Perform a gray scale as we need just informations on radiance not colours
editsession.AddFilter(FilterFactory.CreateGrayscaleFilter());
// Render the result
await editsession.RenderToWriteableBitmapAsync(toneMap1, OutputOption.PreserveAspectRatio);
}
这就是我到目前为止所尝试的
IList<IFilter> filtersList = new List<IFilter>();
var blurFilter = new BlurFilter()
{
BlurRegionShape = BlurRegionShape.Rectangular,
KernelSize = 10
};
var blendFilter = new BlendFilter()
{
BlendFunction = BlendFunction.Difference,
};
var embossFilter = new EmbossFilter()
{
Level = 1.0f
};
var blendFilter2 = new BlendFilter()
{
BlendFunction = BlendFunction.Add
};
var grayScaleFilter = new GrayscaleFilter();
filtersList.Add(blurFilter);
filtersList.Add(blendFilter);
filtersList.Add(embossFilter);
filtersList.Add(blendFilter2);
filtersList.Add(grayScaleFilter);
using (var ms = new MemoryStream())
{
image1.SaveJpeg(ms, image1.PixelWidth, image1.PixelHeight, 0, 100);
ms.Position = 0;
using (var streamImageSource1 = new StreamImageSource(ms))
using (var filterEffect1 = new FilterEffect(streamImageSource1) { Filters = filtersList })
using (var writableBitmapRenderer1 = new WriteableBitmapRenderer(filterEffect1, toneMap1))
{
toneMap1 = await writableBitmapRenderer1.RenderAsync();
}
}
IList filtersList=新列表();
var blurFilter=新的blurFilter()
{
BlurRegionShape=BlurRegionShape.矩形,
内核大小=10
};
var blendFilter=new blendFilter()
{
BlendFunction=BlendFunction.Difference,
};
var浮雕过滤器=新浮雕过滤器()
{
液位=1.0f
};
var blendFilter2=新的BlendFilter()
{
BlendFunction=BlendFunction.Add
};
var grayScaleFilter=新的grayScaleFilter();
过滤器列表。添加(过滤器);
过滤器列表。添加(blendFilter);
过滤器列表。添加(压花过滤器);
过滤器列表。添加(blendFilter2);
过滤器列表。添加(灰度过滤器);
使用(var ms=new MemoryStream())
{
image1.SaveJpeg(ms,image1.PixelWidth,image1.PixelHeight,0100);
ms.Position=0;
使用(var streamImageSource1=新的StreamImageSource(ms))
使用(var filterEffect1=new FilterEffect(streamImageSource1){Filters=filtersList})
使用(var writeableBitMapRender1=new WriteableBitmapRenderer(filterEffect1,toneMap1))
{
toneMap1=Wait WritableBitMapRender1.RenderAsync();
}
}
由于BlendFilter的ForegroundSource
为空,因此引发错误。ForegroundSource
应该是以前的过滤器(在本例中为blurFilter和EmpressFilter)的结果,否
但是,既然我不能使用
EditingSession
和FilterFactory
,我该如何正确地更改代码以使用更新的SDK?我想我已经解决了这个问题。对于那些同舟共济的人,以下是我所做的
using (var ms = new MemoryStream())
{
image2.SaveJpeg(ms, image2.PixelWidth, image2.PixelHeight, 0, 100);
ms.Position = 0;
using (var oriStreamImageSource2 = new StreamImageSource(ms))
{
//Create the blurred version of original image
var blurEffect = new FilterEffect(oriStreamImageSource2)
{
Filters = new[] { new BlurFilter() { KernelSize = BlurLevel } }
};
var blendEffect1 = new FilterEffect(blurEffect)
{
Filters = new[] { new BlendFilter(oriStreamImageSource2, BlendFunction.Difference) }
};
//Create the Laplacian of the original image using the emboss filter
var embossEffect = new FilterEffect(oriStreamImageSource2)
{
Filters = new[] { new EmbossFilter(1.0f) }
};
//Add the result of blur with emboss filter
var blendEffect2 = new FilterEffect(blendEffect1)
{
Filters = new[] { new BlendFilter(embossEffect, BlendFunction.Add) }
};
//Perform a gray scale as we need just informations on radiance not colours
var grayScaleEffect = new FilterEffect(blendEffect2)
{
Filters = new[] { new GrayscaleFilter() }
};
using (var writableBitmapRenderer = new WriteableBitmapRenderer(grayScaleEffect, toneMap2))
{
toneMap2 = await writableBitmapRenderer.RenderAsync();
blurEffect.Dispose();
blendEffect1.Dispose();
embossEffect.Dispose();
blendEffect2.Dispose();
grayScaleEffect.Dispose();
}
};
}