以编程方式选择将图像转换为JPEG或PNG以供Silverlight显示

41 浏览
0 Comments

以编程方式选择将图像转换为JPEG或PNG以供Silverlight显示

我有一个项目,需要将大量的图像类型转换为可在Silverlight应用程序中显示的格式 - TIFF,GIF,WMF,EMF,BMP,DIB等。我可以在服务器上进行这些转换,然后再为Silverlight应用程序提供数据。

然而,我不确定应该在何时选择将其转换为哪种格式,是JPG还是PNG。是否有一些标准,比如TIFF应该始终是JPEG,GIF应该始终是PNG。或者,如果BMP是24位,应该转换为JPEG - 如果更低,则可以是PNG。或者一切都是PNG,原因是什么?

通常在回答这类问题时,我会看到类似于“嗯,如果图片是照片,用JPEG”或“如果有直线,PNG更好”。不幸的是,我将没有浏览任何图像文件的机会,而希望通过代码以标准的方式完成这个任务,即使那意味着有很多if/then语句。

这个主题是否有任何标准或最佳实践?

0
0 Comments

问题的出现原因:在Silverlight显示图像时,需要选择使用JPEG格式还是PNG格式,但是如何选择合适的格式呢?

解决方法:

1. 对于JPEG图像,直接将其传递而不进行转换。

2. 对于TIFF文件,如果其中包含JPEG图像,则将其提取为标准的JPEG格式文件;如果不含JPEG图像,则最好将其转换为PNG格式。

3. 对于矢量图像(.emf和.wmf),PNG比JPEG更适合,但最好使用标准的矢量图像格式(.svg)。

以下是整理的

在Silverlight中显示图像时,我们需要选择使用JPEG格式还是PNG格式。那么如何选择合适的图像转换格式呢?下面将介绍一些解决方法。

首先,我们需要了解JPEG和PNG两种格式的特点。JPEG格式通常用于存储照片和复杂的图像,它可以通过有损压缩来减小文件大小,但在一些图像(如线条图)上会产生奇怪的压缩伪影。而PNG格式是一种无损压缩的格式,图像在转换为PNG格式后与原始图像完全一致。

根据以上特点,我们可以得出一些解决方法。首先,对于已经是JPEG格式的图像,没有必要进行转换,直接传递即可。其次,对于TIFF文件,如果其中包含JPEG图像,则应将其提取为标准的JPEG格式文件;如果不含JPEG图像,则最好将其转换为PNG格式。最后,对于矢量图像(.emf和.wmf),PNG格式比JPEG格式更适合,但最好使用标准的矢量图像格式(.svg)。

希望以上解决方法能够帮助您在Silverlight中选择合适的图像转换格式。感谢David提供的宝贵建议,特别是第一和第二点。如果您只能使用PNG和JPEG两种格式,那么这些方法应该能够满足您的需求。

0
0 Comments

问题的出现原因:

作者想要在自己的应用程序中选择最佳的图像转换格式,以便在Silverlight中显示图像。作者希望能够根据图像文件的一些可查询属性来确定输出格式,例如图像是否具有Alpha通道。

解决方法:

作者提到了一个名为Smush.it的服务,该服务可以告诉用户图像的最佳优化格式,并为用户运行压缩操作。然而,作者希望能够在自己的应用程序中进行转换和压缩操作,而不是通过第三方服务。

作者提出了一个解决方法的示例代码。根据输入图像的格式和属性,选择输出格式为PNG或JPEG。作者的问题是是否存在基于输入的逻辑选择输出格式的方法。

作者想要解决的问题是如何在Silverlight中选择图像转换格式为JPEG或PNG,并提供了一个示例代码来解决该问题。还有一个第三方服务Smush.it,但希望能够在自己的应用程序中进行转换和压缩操作。

0
0 Comments

问题的原因:选择将图像转换为JPEG或PNG格式用于Silverlight显示时,需要根据文件大小和质量之间的平衡来决定使用哪种格式。JPG格式在文件大小和质量之间提供了很好的平衡,而PNG格式则提供了比JPG更多的灵活性。

解决方法:根据需要选择合适的图像转换格式。如果文件大小不是一个问题,那么PNG格式可能是更好的选择,因为它提供了比JPG更多的灵活性。如果文件大小是一个问题,那么可以选择将图像转换为JPEG格式,以在文件大小和质量之间取得更好的平衡。

以下是一个示例代码,用于在Silverlight中将图像转换为JPEG格式:

using System.Windows.Media.Imaging;

// Load the image from file

BitmapImage bitmap = new BitmapImage(new Uri("image.png", UriKind.Relative));

// Create a new JPEG encoder

JpegBitmapEncoder encoder = new JpegBitmapEncoder();

// Set the quality level (between 1 and 100)

encoder.QualityLevel = 80;

// Create a new memory stream to hold the encoded image

MemoryStream stream = new MemoryStream();

// Save the image to the memory stream using the encoder

encoder.Frames.Add(BitmapFrame.Create(bitmap));

encoder.Save(stream);

// Create a new image control

Image imageControl = new Image();

// Set the source of the image control to the memory stream

imageControl.Source = BitmapFrame.Create(stream);

通过上述代码,可以将图像文件加载到Silverlight中,并将其转换为JPEG格式。可以通过调整编码器的质量级别来控制生成图像的文件大小和质量。将转换后的图像设置为Silverlight中的图像控件的源,以实现在Silverlight中显示JPEG格式的图像。

在选择将图像转换为JPEG或PNG格式用于Silverlight显示时,需要根据文件大小和质量之间的平衡来决定使用哪种格式。JPG格式提供了很好的平衡,而PNG格式提供了更多的灵活性。可以通过编程方式将图像转换为JPEG格式,并在Silverlight中显示。以上提供的示例代码演示了如何在Silverlight中将图像转换为JPEG格式并显示。

0