7. 多帧图像
为了赶上英雄第三季的播放日程,我决定一个星期出一集。 在第七集Heroes里面,Peter的功能都被他老爸吸收掉了。所以我的这个系列的第七集来讲讲GDI+没完全实现的一部分功能。
多帧图像是指在一幅图像中有多个帧,支持多帧图像的格式不多,只有TIFF和GIF。其他格式都不能作为多帧图像存储。其中TIFF可以支持很多页,GIF动画也支持多帧。使用GDI+可以生成多帧TIFF,却没办法实现GIF动画的生成,有可能是因为专利的缘故。首先让我们来看看怎么样在生成多帧的TIFF图像。
1 public void CreateMultiframeTIFF(string resultImage, string image1, params string [] images)
2 {
3 //Read multiple frames, the frames' size can be different
4 Image frame1 = Image.FromFile(image1);
5 int length = images.Length;
6 Image[] frames = new Image[length];
7 for (int i = 0; i < length; i++)
8 {
9 frames[i] = Image.FromFile(images[i]);
10 }
11
12 //Set the first frame as the base bitmap
13 Bitmap bmpResult = (Bitmap)frame1;
14
15 //Create encoder parameters with different values
16 EncoderParameters parameters = new EncoderParameters(1);
17 parameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.MultiFrame);
18
19 //Find Tiff codec
20 List<ImageCodecInfo> supportedCodecs = new List<ImageCodecInfo> ();
21 supportedCodecs.AddRange(ImageCodecInfo.GetImageEncoders());
22 ImageCodecInfo tiffCodecInfo = supportedCodecs.Find(
23 delegate(ImageCodecInfo info)
24 {
25 return info.MimeType.Equals(
26 System.Net.Mime.MediaTypeNames.Image.Tiff,
27 StringComparison.OrdinalIgnoreCase);
28 }
29 );
30
31 //Save the first frame to a stream.
32 bmpResult.Save(resultImage, tiffCodecInfo, parameters);
33
34 //Save the second frame into the tiff
35 parameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.FrameDimensionPage);
36 foreach (Image frame in frames)
37 {
38 bmpResult.SaveAdd(frame, parameters);
39 }
40
41 //flush the stream
42 t parameters.Param[0] = new EncoderParameter(Encoder.SaveFlag, (long)EncoderValue.Flush);
43 bmpResult.SaveAdd(parameters);
44
45 //dispose all resources
46 frame1.Dispose();
47 foreach (Image frame in frames)
48 {
49 frame.Dispose();
50 }
51 bmpResult.Dispose();
52 }
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!