积极答复者
wp8.1如何保存image控件为图片?

问题
-
感谢帮助,我首先我把图片加载在image控件中,然后用下面语句把对img进行裁剪。
img.Clip=rec;
请问裁剪后的图片如何保存?
网上搜到的用picturebox控件、WriteableBitmap类实现的都不行,大多是保存stream到图片的。感谢帮助!
//用下面的方法可以保存图片,但图片为空,打不开) async Task SaveVisualElementToFile(FrameworkElement element) { StorageFile file = await clippedFolder.CreateFileAsync(OutputTextBlock.Tag.ToString(), CreationCollisionOption.GenerateUniqueName); var renderTargetBitmap = new RenderTargetBitmap(); await renderTargetBitmap.RenderAsync(element, (int)element.Width, (int)element.Height); var pixels = await renderTargetBitmap.GetPixelsAsync(); using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream); byte[] bytes = pixels.ToArray(); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)element.Width, (uint)element.Height, 96, 96, bytes); await encoder.FlushAsync(); } }
按楼下说的已成功保存图片,但用clip来裁剪图片,再image控件得到的图片中被裁掉的部分是黑色填充,后来在windows sample里面找例程把保存图片的方法替换掉了,sample名称 : How to crop bitmap in a Windows Store app (C#)
- 已编辑 chao cui 2015年5月10日 1:44
答案
全部回复
-
按您说的把 这句代码替换掉就成功了,学习了,万分感谢!
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 96.0, 96.0, pixels.ToArray());
-------------------------------------------------------------------------------------------------------------------
我自己再思考一下。。。我整理好后再回复,下面的请忽略
我也在wp\win8.1其实都运行过,其实我的程序最终是要在win8.1上跑的。我在win8.1上可以保存rectangle、Ellipse,但当我传入的element是image时,保存的图片不是image控件里的图片,而是空的文件。麻烦你试试把你的程序里的Ellipse换成一个image控件试试。
<Image x:Name="imgTest" Source="ms-appx:///Assets/Logo.scale-100.png"/>
- 已编辑 chao cui 2015年5月9日 13:03