在我的应用程序中,我接受来自用户的图像。如果图像大于指定大小,那么我会缩小到适当的大小并保存在数据库中。我正在使用FJCore库来缩放图像。该库适用于JPEG图像。但它不支持PNG图像。看来图书馆最近没有更新。任何想法如何在Silverlight中完成?在Silverlight中缩放PNG图像
0
A
回答
0
您可以做的是创建一个新的Image元素,并将其源设置为从该流创建的可写位图,但不要将此Image元素添加到可视树中。创建另一个需要的最终大小的WriteableBitmap,然后在此WriteableBitmap上调用render来传递Image元素和ScaleTransform以将图像大小调整为适当的大小。然后,您可以使用第二个WriteableBitmap作为第二个Image元素的源,并将其添加到可视化树中。
0
我用WriteableBitmapEx项目做了这个。这是代码,如果有人需要它。
private void ShowCustomImageButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Multiselect = false;
openDialog.Filter = "PNG Files|*.PNG";
bool? userClickedOK = openDialog.ShowDialog();
if (userClickedOK == true)
{
BitmapImage image = new BitmapImage();
// get image that user has selected.
image.SetSource(openDialog.File.OpenRead());
WriteableBitmap wrtbmp = new WriteableBitmap(image);
// resize image if needed.
wrtbmp = wrtbmp.Resize(64, 64, WriteableBitmapExtensions.Interpolation.NearestNeighbor);
var img = wrtbmp.ToImage();
// convert image into file stream.
Stream filestram = img.ToStream();
filestram.Position = 0;
using (filestram)
{
// convert file stream into memory stream.
var memoryStream = new MemoryStream();
byte[] aryBuffer = new byte[16384];
int nRead = filestram.Read(aryBuffer, 0, aryBuffer.Length);
while (nRead > 0)
{
memoryStream.Write(aryBuffer, 0, nRead);
nRead = filestram.Read(aryBuffer, 0, aryBuffer.Length);
}
// use following line to convert in bytes and save into database.
memoryStream.ToArray();
imgCustomImage.Source = CreateBitmapImage(memoryStream);
}
}
}
private BitmapImage CreateBitmapImage(MemoryStream memoryStream)
{
if ((memoryStream == null) || (memoryStream.Length == 0))
return null;
var image = new BitmapImage();
image.SetSource(memoryStream);
return image;
}
相关问题
- 1. 在Silverlight中放大平移和缩放图像
- 2. 在Unity5中缩放PNG? - Bountie
- 3. 在光环中的缩放图像中缩放图像
- 4. 在php中动态缩放图像jpg/png/gif
- 5. 在ruby中缩放图像
- 6. 在as3中缩放图像?
- 7. 在CSS中缩放图像
- 8. 在GTK中缩放图像
- 9. 在HTML中缩放图像
- 10. 在GWT中缩放图像
- 11. 在ScrollView中缩放图像
- 12. 在gridview中缩放图像
- 13. 缩放图像
- 14. 图像缩放
- 15. 使用Silverlight进行图像缩放(缩小尺寸)
- 16. 图像缩放/成长在缩略图
- 17. 如何在iPhone中缩放图像而不缩放子视图?
- 18. 为图像缩放图像
- 19. 缩放放置在图像视图中的图像的控件?
- 20. 在滚动视图中缩放图像
- 21. Silverlight:为什么png图像不显示?
- 22. 缩放和滚动的图像在Silverlight 4
- 23. 中心图像缩放滚动图像
- 24. android中的缩放图像
- 25. 缩放PrimeFaces中的图像
- 26. 缩放iTextSharp中的图像
- 27. 在Android上缩放图像
- 28. Silverlight控件视图图像放大/缩小?
- 29. 在png图像上拖放颜色
- 30. 缩放图像CSS
我还需要将此图像转换为字节并在下次使用这些字节时重新呈现它。这种技术在这种情况下会起作用吗? –