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

  

uwp 图片剪切的更多相关文章

  1. UWP 图片剪切旋转工具

    好久没撸随笔了,明天终于放假休息了..准备去进行信仰充值,看<魔兽>去(话说surface phone 好久出,让我这个做UWP的也充点信仰..) 先上下效果图: 在设计中,遇到一个问题, ...

  2. iOS开发UI篇—Quartz2D使用(图片剪切)

    iOS开发UI篇—Quartz2D使用(图片剪切) 一.使用Quartz2D完成图片剪切 1.把图片显示在自定义的view中 先把图片绘制到view上.按照原始大小,把图片绘制到一个点上. 代码: - ...

  3. 【iOS】Quartz2D图片剪切

    一.使用Quartz2D完成图片剪切1.把图片显示在自定义的view中 先把图片绘制到view上.按照原始大小,把图片绘制到一个点上. 代码: - (void)drawRect:(CGRect)rec ...

  4. 图片上传,图片剪切jquery.imgareaselect

    ---恢复内容开始--- <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. android——拍照,相册图片剪切其实就这么简单

    接触android这么久了.还没有真正的浩浩看看android拍照,相册图片剪切到底是怎么回事,每次都是从别人的代码一扣,就过来了.其实,谷歌提供的API已经很强大.只需要用的好,就那么几句就可以搞定 ...

  6. 图片剪切之Croppic插件

    前几天做图片上传时需要进行图片的剪切和缩放,上网查找时找到了这个插件.样式很好看,功能也很OK.但是网上都是php进行后台处理图片的例子,然后只好慢慢琢磨C#的处理.插件地址是:http://www. ...

  7. 用JavaScript实现图片剪切效果

    学会如何获取鼠标的坐标位置以及监听鼠标的按下.拖动.松开等动作事件,从而实现拖动鼠标来改变图片大小. 还可以学习css中的clip属性. 一.CSS实现图片不透明及裁剪效果. 图片剪切三层结构 1.第 ...

  8. php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明

    php有一款插件叫做imagemagick,功能很强大,提供了图片的很多操作,图片剪切.压缩.合并.插入文本.背景色透明等.并且有api方法调用和命令行操作两种方式,如果只是简单处理的话建议api方法 ...

  9. opencv 图片剪切

    import cv2 as cv import numpy as np # 图片剪切 img = cv.imread('../images/moon.jpg', flags=1) # flags=1读 ...

  10. android 7.0以上共享文件(解决调用系统照相和图片剪切出现的FileUriExposedException崩溃问题)

    在android7.0开始试共享“file://”URI 将会导致引发 FileUriExposedException. 如果应用需要与其他应用共享私有文件,则应该使用 FileProvider, F ...

随机推荐

  1. Next.js 与 Node.js 全栈应用开发:API设计、数据库连接、身份验证 | 2024版

    书接上回,到目前为止,您的应用程序只有一个主页.让我们学习如何使用布局和页面创建更多路线. 在本章之中我们需要讨论: dashboard使用文件系统路由创建路由. 了解创建新路线段时文件夹和文件的作用 ...

  2. Python请求接口传Null

    Python中没有Null,与之对应的是None. {"dog": "keji", "cat": None}

  3. 看图对比Pytest、Unittest

  4. 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议

    文章目录 一.TCP/IP五层模型(重要) 二.应用层常见的协议 三.TCP与UDP 3.1 TCP.UDP的区别(重要) 3.2 运行于TCP.UDP上的协议 3.3 TCP的三次握手.四次挥手 3 ...

  5. MYSQL SQL做题总结

    一.关于join 1.内外左右连接 2.交叉联结(corss join) 使用交叉联结会将两个表中所有的数据两两组合.如下图,是对表"text"自身进行交叉联结的结果: 3.三表双 ...

  6. Air780E如何发送SMS?一文详解!

    ​ 今天一起来学习使用合宙低功耗4G模组Air780E发送SMS短消息: 一.SMS简介 SMS(短消息服务,ShortMessageService)功能主要用于在蜂窝网络中传输短消息. 在4G网络中 ...

  7. Abp Vnext Vue版本(Vben Admin5.0)

    前言 之前有提供免费开源的基于vben2.8版本的abp vnext pro版本 abp vnext pro vben admin 2.8 vben2.8作者已经重构一个版本,命名为vben5,而vb ...

  8. DSPf28335 --工程模版相关文件

    创建工程需要的两个文件 DSP2833x_common 1.cmd 下图中的两个文件(由TI公司提供的) 1.28335_RAM_lnk.cmd :程序下载到RAM中进行调试和仿真所使用的启动文件. ...

  9. 接口文档解决方案之Torna

    ◆一.开源项目简介 接口文档解决方案,目标是让接口文档管理变得更加方便.快捷.Torna采用团队协作的方式管理和维护接口文档,将不同形式的文档纳入进来统一维护. Torna弥补了传统文档生成工具(如s ...

  10. golang之命令行参数

    当我们希望通过命令行启动Golang程序,获取输入的各种形式参数时,该如何处理呢? [os.Args] os.Args是一个string的切片,用来存储所有的命令行参数,包括go run main.g ...