弹来弹去跑马灯!

uwp 图片剪切

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public async void BitmapTransformAndSaveTest()
      {
          var uncroppedfile = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("uncropped.jpg");
          if (uncroppedfile == null)
          {
              return;
          }
 
          WriteableBitmap wb = null;
 
          // create a stream from the file and decode the image
          var fileStream = await uncroppedfile.OpenAsync(Windows.Storage.FileAccessMode.Read);
          var decoder = await BitmapDecoder.CreateAsync(fileStream);
 
          // create a new stream and encoder for the new image
          using (InMemoryRandomAccessStream ras = new InMemoryRandomAccessStream())
          {
              var enc = await BitmapEncoder.CreateForTranscodingAsync(ras, decoder);
 
              // convert the entire bitmap to a 100px by 100px bitmap
              enc.BitmapTransform.ScaledHeight = 100;
              enc.BitmapTransform.ScaledWidth = 100;
 
              var bounds = new BitmapBounds();
              bounds.Height = 50;
              bounds.Width = 50;
              bounds.X = 50;
              bounds.Y = 50;
              enc.BitmapTransform.Bounds = bounds;
 
              // write out to the stream
              await enc.FlushAsync();
 
              // create a writeable bitmap from the stream
              ras.Seek(0);
              wb = new WriteableBitmap(100, 100);
              wb.SetSource(ras);
          }
 
          // save the cropped file now
          var croppedfile = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("cropped.jpg", Windows.Storage.CreationCollisionOption.ReplaceExisting);
          using (var stream = await croppedfile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
          {
              var pixelStream = wb.PixelBuffer.AsStream();
              var bytes = new byte[pixelStream.Length];
              pixelStream.Seek(0, SeekOrigin.Begin);
              await pixelStream.ReadAsync(bytes, 0, (int)pixelStream.Length);
              await pixelStream.FlushAsync();
 
              var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
              encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)wb.PixelWidth, (uint)wb.PixelHeight, 0, 0, bytes);
              await encoder.FlushAsync();
              await stream.FlushAsync();
          }
      }

  

posted @   wgscd  阅读(59)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示