Xamarin的Kimono以及Google的Guetzli和Draco

Xamarin开源了用于编辑SkiaSharp对象的工具,而Google则推出了减少2D JPEG和3D图形大小的方案。

Xamarin是微软的子公司,开源了Kimono设计器,它是一个用来图形化编辑SkiaSharp对象的工具,这种对象随后可以转换为目标平台的编码。SkiaSharp是基于Skia图像库的.NET 2D API,Skia项目是由Google发起的,作为一种跨平台的图像引擎来使用,它目前用到了Chrome、Firefox、Android等平台上。Skia和SkiaSharp的问题在于开发人员需要使用类似于Java 2D的底层的API来创建2D图像。使用它来绘制贝塞尔曲线的样例可以在Skia Fiddle页面上找到。Kimono设计器能够让开发人员以图形化的方式创建2D图片,让这项任务变得更加简单。

Kimono带来了很多的特性,包括颜色调色板(Color Palettes)、可视化的渐变编辑器(Visual Gradient Editor)、已命名的样式(Named Styles)、属性链接(Linked Properties)、脚本语言等。这个工具可以为Windows (WinForms、UWP、WPF)、Android、iOS, MacOS、tvOS或跨平台生成编码。目前,Kimono只能运行在MacOS上,但是Xamarin计划提供UWP以及Android和iOS平板的版本。

而在另一方面,Google开源了Guetzli [guɛtsli],这是一个新的JPEG压缩算法和编码器,它能够提供更好的压缩比例同时保持图片的质量不受影响。按照Google的说法,Guetzli的图片相对于libjpeg产生的相同JPEG图片,在文件大小上能够小20-30%。根据这篇文章的说法,文件大小可以减少35%。在实现这项功能时,不需要改变使用JPEG的浏览器和应用的已有写法。Guetzli之所以能够实现更小的文件尺寸要归功于它能够消除图片中元素,而且不会影响图片的质量。开发Guetzli的团队这样描述到:

JPEG图片的视觉质量与其多个阶段的压缩过程直接相关:彩色空间转换(color space transform)、离散余弦转换(discrete cosine transform)以及量化(quantization)。Guetzli的目标就在量化阶段,在这个阶段,视觉质量损失得越多,所形成的文件就越小。Guetzli在最小化损失和文件大小之间取得了一种平衡,这是通过一种搜索算法来实现的,该算法试图克服JPEG格式的psychovisual模型与Guetzli的psychovisual模型之间的差异,相对于简单的色彩转换和离散余弦转换,Guetzli能够采用一种更全面和细致的方式达到近似的色彩感知和视觉效果。Guetzli做到了文件尺寸更小,但是其代价就是相对于目前可用的方法,它的搜索算法在创建压缩文件时,会耗费更长的时间。

在今年早些时候,在减少互联网数据传输方面,Google还做了另外一项工作,这次的成果是应对3D图像。Draco是一个针对3D几何网格(geometric meshes)和点云(point clouds)的压缩库。这个库支持“压缩点、连接信息、纹理坐标(texture coordinates)、颜色信息、法线(normals)以及其他与几何相关的通用属性。”按照这篇文章的说法,相对于网格文件压缩,它所能达成的结果就是3D图像能够在尺寸上减少十数倍。Draco附带了一个C++编码器,还有一个C++和JavaScript的转码器,其中JavaScript转码器瞄准的就是Web应用中的使用场景。

原文地址:http://www.infoq.com/cn/news/2017/03/kimono-guetzli-draco


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017蓝桥杯省赛---java---A---7(正则问题)

题目描述 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。输入 ---- 一个由x()|组成的正则表达式。输…

Mybatis简介与原理

转载自 Mybatis简介与原理 什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框…

Visual Studio 2017通过SSH支持Git

在大多数开发人员的工具包中,Git的重要性在不断提升,说它是一项必备技能也不为过,所以对于任意一款现代化的IDE来说,能够使用Git多样化的功能都是其重要的组成部分。在Visual Studio 2017中,微软已经在其UI界面中扩展了…

2018蓝桥杯省赛---java---A---1(分数)

题目描述 思路分析 方案一 等比数列,再进行约分 方案二 求和 约分:辗转相除法求最大公约数 package TEST;class Main{static int GCD(int x,int y){//求最大公约数if(y0){return x;}return GCD(y,x%y);//是x%y,不是x/y}public static vo…

SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

转载自 SpringMVCSpring4Mybatis3集成,开发简单Web项目源码下载 基本准备工作 1、安装JDK1.6以上版本,安装与配置 2、下载mybatis-3.2.0版:https://repo1.maven.org/maven2/org/mybatis/mybatis/ 3、下载mybatis-spring-1.2.1版&#x…

微软宣布12月15日关闭开源软件托管平台CodePlex

网易科技讯4月1日消息,据Venturebeat报道,微软今天宣布,将关闭开源软件托管平台CodePlex。微软2006年推出这项服务,并决定在今年12月15日将其关闭。 微软公司副总裁布莱恩哈里(Brian Harry)在博文中写道&am…

2018蓝桥杯省赛---java---A--2-(星期一)

题目描述 思路分析 方案一 翻电脑日历得2000年12月31日是周日 方案二 package TEST;class Main{public static void main(String[] args) {int sum0;for (int i 1901; i < 2000; i) {//开始的那天是星期二if((i%4000)||(i%100!0&&i%40)){sum366;}else {sum36…

Mybatis与Hibernate的详细对比

转载自 Mybatis与Hibernate的详细对比 前言 这篇博文我们重点分析一下Mybatis与Hibernate的区别&#xff0c;当然在前面的博文中我们已经深入的研究了Mybatis和Hibernate的原理。 Mybatis 【持久化框架】Mybatis简介与原理【持久化框架】SpringMVCSpring4Mybatis3集成&…

android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...

安卓手机越用越卡&#xff0c;恢复出厂设置真有用&#xff1f;别瞎搞&#xff0c;看完就明白了&#xff01;现在手机的价格逐渐的开始上升&#xff0c;一部好一点的手机价格还是比较贵的&#xff0c;所以很多人想要节省更多的换机支出&#xff0c;都会想要购买到一款可以使用的…

.NET Core开源组件:后台任务利器之Hangfire

一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务&#xff0c;支持多种数据库。在.net core的环境中&#xff0c;由Core自带的DI管理着生命周期&#xff0c;免去了在NF4.X环境中配置always running的麻烦&#xff0c;真正做到开箱即用。 二.安装 Hangfie官方支…

2019蓝桥杯省赛---java---A---1(平方和)

题目描述 思路分析 用long保存防止溢出 代码实现 package TEST;public class Main {public static void main(String[] args) {Long cnt 0L;for (int i 1; i < 2019; i)if (check(i)) cnt i*i;System.out.print(cnt);}static boolean check(int n) {String an"&q…

html中无序列表怎么整体居中,html中有序列表和无序列表怎么定位?

慕粉42660912017-06-26 17:17已采纳通常都是通过定位一组元素&#xff0c;然后根据这一组元素的顺序或者独有的特征去定位# codingutf-8import timefrom selenium import webdriver定位一组元素&#xff1a;勾选部分browser webdriver.Firefox()browser.get("http://www.…

为什么MySQL将会是一个更好的NoSQL

转载自 为什么MySQL将会是一个更好的NoSQL 前言 MySQL是一个更好的NoSQL数据库。当考虑到NoSQL的使用案例&#xff0c;比如对Key/Value键值存储来讲&#xff0c;MySQL在性能、易用性和稳定性方面更有意义。MySQL毕竟是一款成熟稳定的产品&#xff0c;在互联网上有大量的在线…

气泡提示效果css.html,用纯CSS3绘制高端简约的气泡提示框

用纯css绘制一个简单的气泡提示框&#xff0c;对于长期关注课课家CSS3绘图教程的朋友来说是件轻而易举的事&#xff0c;但是程序员最不喜欢做的事情是重复造轮子&#xff0c;加上之前小编分享的几个气泡要么过于复杂&#xff0c;通用性不强&#xff0c;要么需要鼠标移上才显示&…

HTML5表格简单应用案例之[招聘需求表]

首先先来看一下实现的效果&#xff1a; 源代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css">#tab{width: 100%;}tr td{width: 10%;height: 50px;t…

我为什么鼓励工程师写blog

工程师该怎样才能突破自己能力瓶颈&#xff1f;写 blog&#xff01;工程师该怎样精进自己在职涯上所需要的能力&#xff1f;写 blog&#xff01;工程师该怎样才能保持学习与成长的动能&#xff1f;写 blog&#xff01;工程师该怎样才能证明自己的潜力与特质&#xff1f;写 blog…

2020蓝桥杯省赛---java---C---1(约数个数)

题目描述 代码实现 package TEST;class Main{public static void main(String[] args) {int ans0;for (int i 1; i < 78120; i) {if(78120%i0){ans;}}System.out.println(ans);} }答案 96

CSS3中引入多种自定义字体(font-face)

今天在HTML中发现了一个问题&#xff0c;提供给我们默认的字体有很多&#xff0c;但是除了那些“黑体”、“宋体”、“楷体”等支持中文字体之外&#xff0c;其余的都不知道中文字体&#xff0c;如果我们需要用自己喜欢的字体怎么办呢&#xff1f;CSS3中是否可以引入自定义下载…

在ASP.NET Core中使用Apworks快速开发数据服务

不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架&#xff0c;旨在为分布式企业系统软件开发提供面向领域驱动&#xff08;DDD&#xff09;的框架级别的解决方案&#xff0c;并对多种系统架构风格提供支持。这个框架的开发和维护我坚持…

2015蓝桥杯省赛---java---A---1(熊怪吃核桃)

题目描述 代码实现 package TEST; class Main{public static void main(String[] args) {int n1543;int sum0;while (n!1){if(n%20){n/2;}else {sum;n--;}}System.out.println(sum1);} }答案 5