Picasso 二维矢量图形库开源

时间:2022-08-23 00:28:15
http://code.google.com/p/picasso-graphic/

一个高级二维矢量图像开发库。

26 个解决方案

#1


顺带帖一个Google Chrome和Android使用的2D图形库skia:

http://code.google.com/p/skia/

#2


居然没人顶, 难道没人感兴趣吗?

#3


楼主就是该库的作者,不是没人感兴趣,是应该加个介绍啊

Picasso 是一款跨平台的高级二维矢量绘图引擎。Picasso提供平台无关的图形渲染技术,使它可以运行在几乎所有操作系统平台。目前支持的平台包括Windows 、 WindowsCE、 Linux。Picasso提供低层次,轻量级的二维矢量图形渲染技术,可以为不同是设备提供一致的图形输出质量。Picasso的API非常简单并且易于使用,可以支持很多高级二维图形操作,包括 Path, Transform, Gradient, Pattern, Image 和 Truetype 字体等功能,支持多种颜色模式和混合方式, 可以用在需要矢量图形操作的软件里。

http://www.zncsoft.com/blog/?cat=11

#4


还有好像没有看到好的demo

另外你看看这里,我怎么看你的和这个是不是有点像
http://raphaeljs.com/

#5


它那个是JavaScript 的, 我这个是C++实现的, 不一样。

#6


Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源

#7


骨子里还是开源的AGG啊,楼主是在哪些方面做了增强,为何不直接介绍一下你的改进什么的,我还以为底层也是楼主自己写的呢,那可得膜拜一下

#8


既然已经开源了,做了什么改动自己看去。你要是觉得没什么用,那你直接用AGG好了,又没人求你用。

#9


我看挺好的

#10


哎 我原以为Cairo已经够慢的了 谁知道agg更慢的一塌糊涂 = =

建议还是用skia吧 比cairo快不知道多少了 在arm上更快 

如果只在pc上用 可以试试 shivavg 比skia还快2到3倍

#11


2D矢量库的算法不是难点:开源代码一大把,如agg和开罗、还有新兴的skia,楼主的例子似乎是OpenVG的事例 ----- 这个也是有源代码(碰巧我对OpenVG有些研究),因此实现这些功能不是什么问题和技术难点,没有什么值得炫耀的;我现在比较关心的是效能,除skia外(毕竟有google的支持),agg和"开罗"的效能都不敢恭维,开源的OpenVG效能更是慢的离谱。我更具体些提出问题,在单线程的1.6G的PC上,您的老虎头的FPS可以达到多少(高画质、抗锯齿开),如果达不到15FPS就不要再这里炫耀了,完善完了再拿出来。

#12


你们总是不明白,软件是拿来用的,不是拿来跑分的, 那几个ms的性能优势,有什么值得夸耀的,愿意用就用,不愿意用就滚蛋,我是分享给有需要的人的,你愿意用skia还是什么狗屁VG那是你的*,我愿意开发那是我的*。没见你们谁开发一个更好的开源出来啊,假牛逼什么呀都。。。

#13


1)确实如此,但是如果我是用您的矢量工具实时播放,却只能跑到xFPS,请问用户怎样用?我的目标是RealTime的矢量图形。
2)小弟不才,居然敢提15FPS是碰巧小弟也在研究矢量图形,我自己实现了一个完整的OpenVG(大约是2007年的事情了),那个所谓的老虎头也就16FPS,当然是高画质、抗锯齿开的情况下
Picasso 二维矢量图形库开源
1.6GHZ CPU ---- CPU速度一般了

CSDN是技术交流的园地,所以以后说话的时候还是请注意一些为好;另外,最近精力有限,确实真心想用您的矢量工具,15FPS是硬性指标 ----- 肯定要比我之前写的老古董快才行啊。

#14


本来并不想回复这样的无聊的帖子,但想想在CSDN都应该是"IT文人",突然看到"滚蛋"这两个字很觉得突兀;我不是什么牛人,只是一个非常酷爱技术的老古董而已;
因为精力有限,已经没有时间再将OpenVG 提升到1.1了,一直以来一直只是简单优化而已;看到楼主的帖子确实为之一振 ----- 毕竟是同行人;但看了楼主最后的帖子确实又一次被“撼”了;
当然这件事情到此为止,至于那个老虎头到底应该渲染多快,我相信实用第一 ----- 满足应用的需要,但明显应该不至15FPS;我不希望因此引发无聊的争吵,到此结束;有时间多写两行代码好了;

#15


我也想说明一点, 我把这个GPL发布出来, 原本没有其它的意思,也没有炫耀的成份,我并没说我的软件有XXX牛, 比XXX还快,能到到XXX指标等等。我的原意是,有谁需要,拿去好了,不需要也挨不着您是什么事。有意见或建议可以发邮件给我或和我讨论, 就像你说的这是讨论技术的地方。  但我不明白 “如果达不到 XXX 就不要再这里炫耀了”这话是什么意思? 就算你技术再牛,你可以这么对待别人吗? 所以最后一帖是希望告诉那些人,你们至少得学会尊重别人的劳动。。

#16


我也研究过2D图形,以前也关注过ONECOOLX的作品,最初他的PICASSO是不开源的,也去看了看AGG,SKIA。现在开源了,对开放自己劳动成果的也是心生敬佩的。貌似“部分”写程序的都有点自大并相互BS的毛病。我习惯并学会要淡定啊。现在"国内"(说大了就算是鄙人愚见吧)总是想从“开源”里占便宜,贡献不多(可以说非常小)。貌似处在 “一直在山寨,从未有超越”的状态。支持ONECOOLX开放交流的态度。

#17


无谓的争执就到此为止吧, 本来也是来交流和学习的。 对这个软件感兴趣或有心提供帮助发展或意见的朋友,可以发邮件给我。

#18


支持楼主,开源就是不断有人来改进,那个TOM估计他的东西还躺在07年得时候。

#19


感觉真正无聊和在炫耀是tomsoft,并非楼主,哈哈

#20


100%支持楼主,我喜欢“有谁需要,拿去好了”,我喜欢这样的态度,能共享是无条件支持的,中国不是这样的人能多,而是这样的人太少。

当然,站在别人代表上指摘的就需要批评了,你需要实时画图,可以用汇编底层自己写啊。我需要大图片处理,有画质无速度需求,能看到楼主的好很多。和拿出共享相反,说三道四的人中国不是太少而是太多。文人相轻,没想到码农也相轻

#21


虽然是过了很久的帖,但是本着客观的原则,还是对amanithvg、gingkoVG、以及Picasso,在虎头的绘制进行了性能测试。

我的CPU是i5-2430M,2.4G,窗体大小都设置成800×600。

amanithvg 178 FPS。
gingkoVG  22  FPS。
Picasso   103 FPS。

gingkoVG在控制台窗口有很多输出,可能影响了其真实性能,Picasso,我是将on_draw重复1000次,然后统计时间最后是9688毫秒。

总体来说Picasso的性能不错,也说明agg还是相当强悍的。

#22


picasso解决agg接口难用的问题,贡献极大!
如果接口参数能够整数化优化估计会非常一流!

#23


本人打算使用你的picasso来实现2D Graphics功能,谢谢您的贡献!
我很久之在前便研究对比过cairo和agg,对AGG还是很喜欢的。但苦于他是C++模板接口没有规范化,难以使用,以致多次打算放弃。
至于google的skia只是名人效应,未必比AGG强多少,但skia做过整数优化必然暂时好一些,但代码数量巨大,显然没有agg简洁。
如果能够把AGG也做必要的定点整数化,效果一定会超一流,最简单的优化就是定义double=float然后编译就可以提升很多速度,因为float要比double快很多的 -- (这一点知道的人不多的)。

比如freetype2的26.4或16.16定点整数来实现浮点运算使得freetype2拥有非常好的效果,这也是agg可以效仿的地方,一旦定点数量上去了定点与浮点的差别就会非常明显。

我认为picasso是可以继续agg为完成的事业。支持作者!

#24


另外,建议把font部分改称可选,因为freetype2本身已经很好。

agg只是利用freetype2的轮廓,但有时候字体缺省输出的是点阵,没有轮廓,这是agg字体显示不出来,比如14点阵大小的sunsim.ttc字体就会优先点阵字体,除非关闭点阵字体才会输出轮廓。

没有font功能可以专心于2D图形的优化提高。

现代图像处理使用32位像素的格式已经足够,2D图形处理可以不需要支持各种像素格式,比如565,555,和24位的RGB格式,本人认为只需要专心RGBA/BGRA便可足够(本人更喜欢BGRA格式),因为物理显示输出的时候进行具体转换会很快,何况还有硬件加速功能自动完成呢。

#25


引用 23 楼 xiuxen 的回复:
本人打算使用你的picasso来实现2D Graphics功能,谢谢您的贡献!
我很久之在前便研究对比过cairo和agg,对AGG还是很喜欢的。但苦于他是C++模板接口没有规范化,难以使用,以致多次打算放弃。
至于google的skia只是名人效应,未必比AGG强多少,但skia做过整数优化必然暂时好一些,但代码数量巨大,显然没有agg简洁。
如果能够把AGG也做……


你的建议非常好,我也在做这方面的研究,感谢支持!

#26


不知何时才能追上你们的学习步伐

#1


顺带帖一个Google Chrome和Android使用的2D图形库skia:

http://code.google.com/p/skia/

#2


居然没人顶, 难道没人感兴趣吗?

#3


楼主就是该库的作者,不是没人感兴趣,是应该加个介绍啊

Picasso 是一款跨平台的高级二维矢量绘图引擎。Picasso提供平台无关的图形渲染技术,使它可以运行在几乎所有操作系统平台。目前支持的平台包括Windows 、 WindowsCE、 Linux。Picasso提供低层次,轻量级的二维矢量图形渲染技术,可以为不同是设备提供一致的图形输出质量。Picasso的API非常简单并且易于使用,可以支持很多高级二维图形操作,包括 Path, Transform, Gradient, Pattern, Image 和 Truetype 字体等功能,支持多种颜色模式和混合方式, 可以用在需要矢量图形操作的软件里。

http://www.zncsoft.com/blog/?cat=11

#4


还有好像没有看到好的demo

另外你看看这里,我怎么看你的和这个是不是有点像
http://raphaeljs.com/

#5


它那个是JavaScript 的, 我这个是C++实现的, 不一样。

#6


Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源
Picasso 二维矢量图形库开源

#7


骨子里还是开源的AGG啊,楼主是在哪些方面做了增强,为何不直接介绍一下你的改进什么的,我还以为底层也是楼主自己写的呢,那可得膜拜一下

#8


既然已经开源了,做了什么改动自己看去。你要是觉得没什么用,那你直接用AGG好了,又没人求你用。

#9


我看挺好的

#10


哎 我原以为Cairo已经够慢的了 谁知道agg更慢的一塌糊涂 = =

建议还是用skia吧 比cairo快不知道多少了 在arm上更快 

如果只在pc上用 可以试试 shivavg 比skia还快2到3倍

#11


2D矢量库的算法不是难点:开源代码一大把,如agg和开罗、还有新兴的skia,楼主的例子似乎是OpenVG的事例 ----- 这个也是有源代码(碰巧我对OpenVG有些研究),因此实现这些功能不是什么问题和技术难点,没有什么值得炫耀的;我现在比较关心的是效能,除skia外(毕竟有google的支持),agg和"开罗"的效能都不敢恭维,开源的OpenVG效能更是慢的离谱。我更具体些提出问题,在单线程的1.6G的PC上,您的老虎头的FPS可以达到多少(高画质、抗锯齿开),如果达不到15FPS就不要再这里炫耀了,完善完了再拿出来。

#12


你们总是不明白,软件是拿来用的,不是拿来跑分的, 那几个ms的性能优势,有什么值得夸耀的,愿意用就用,不愿意用就滚蛋,我是分享给有需要的人的,你愿意用skia还是什么狗屁VG那是你的*,我愿意开发那是我的*。没见你们谁开发一个更好的开源出来啊,假牛逼什么呀都。。。

#13


1)确实如此,但是如果我是用您的矢量工具实时播放,却只能跑到xFPS,请问用户怎样用?我的目标是RealTime的矢量图形。
2)小弟不才,居然敢提15FPS是碰巧小弟也在研究矢量图形,我自己实现了一个完整的OpenVG(大约是2007年的事情了),那个所谓的老虎头也就16FPS,当然是高画质、抗锯齿开的情况下
Picasso 二维矢量图形库开源
1.6GHZ CPU ---- CPU速度一般了

CSDN是技术交流的园地,所以以后说话的时候还是请注意一些为好;另外,最近精力有限,确实真心想用您的矢量工具,15FPS是硬性指标 ----- 肯定要比我之前写的老古董快才行啊。

#14


本来并不想回复这样的无聊的帖子,但想想在CSDN都应该是"IT文人",突然看到"滚蛋"这两个字很觉得突兀;我不是什么牛人,只是一个非常酷爱技术的老古董而已;
因为精力有限,已经没有时间再将OpenVG 提升到1.1了,一直以来一直只是简单优化而已;看到楼主的帖子确实为之一振 ----- 毕竟是同行人;但看了楼主最后的帖子确实又一次被“撼”了;
当然这件事情到此为止,至于那个老虎头到底应该渲染多快,我相信实用第一 ----- 满足应用的需要,但明显应该不至15FPS;我不希望因此引发无聊的争吵,到此结束;有时间多写两行代码好了;

#15


我也想说明一点, 我把这个GPL发布出来, 原本没有其它的意思,也没有炫耀的成份,我并没说我的软件有XXX牛, 比XXX还快,能到到XXX指标等等。我的原意是,有谁需要,拿去好了,不需要也挨不着您是什么事。有意见或建议可以发邮件给我或和我讨论, 就像你说的这是讨论技术的地方。  但我不明白 “如果达不到 XXX 就不要再这里炫耀了”这话是什么意思? 就算你技术再牛,你可以这么对待别人吗? 所以最后一帖是希望告诉那些人,你们至少得学会尊重别人的劳动。。

#16


我也研究过2D图形,以前也关注过ONECOOLX的作品,最初他的PICASSO是不开源的,也去看了看AGG,SKIA。现在开源了,对开放自己劳动成果的也是心生敬佩的。貌似“部分”写程序的都有点自大并相互BS的毛病。我习惯并学会要淡定啊。现在"国内"(说大了就算是鄙人愚见吧)总是想从“开源”里占便宜,贡献不多(可以说非常小)。貌似处在 “一直在山寨,从未有超越”的状态。支持ONECOOLX开放交流的态度。

#17


无谓的争执就到此为止吧, 本来也是来交流和学习的。 对这个软件感兴趣或有心提供帮助发展或意见的朋友,可以发邮件给我。

#18


支持楼主,开源就是不断有人来改进,那个TOM估计他的东西还躺在07年得时候。

#19


感觉真正无聊和在炫耀是tomsoft,并非楼主,哈哈

#20


100%支持楼主,我喜欢“有谁需要,拿去好了”,我喜欢这样的态度,能共享是无条件支持的,中国不是这样的人能多,而是这样的人太少。

当然,站在别人代表上指摘的就需要批评了,你需要实时画图,可以用汇编底层自己写啊。我需要大图片处理,有画质无速度需求,能看到楼主的好很多。和拿出共享相反,说三道四的人中国不是太少而是太多。文人相轻,没想到码农也相轻

#21


虽然是过了很久的帖,但是本着客观的原则,还是对amanithvg、gingkoVG、以及Picasso,在虎头的绘制进行了性能测试。

我的CPU是i5-2430M,2.4G,窗体大小都设置成800×600。

amanithvg 178 FPS。
gingkoVG  22  FPS。
Picasso   103 FPS。

gingkoVG在控制台窗口有很多输出,可能影响了其真实性能,Picasso,我是将on_draw重复1000次,然后统计时间最后是9688毫秒。

总体来说Picasso的性能不错,也说明agg还是相当强悍的。

#22


picasso解决agg接口难用的问题,贡献极大!
如果接口参数能够整数化优化估计会非常一流!

#23


本人打算使用你的picasso来实现2D Graphics功能,谢谢您的贡献!
我很久之在前便研究对比过cairo和agg,对AGG还是很喜欢的。但苦于他是C++模板接口没有规范化,难以使用,以致多次打算放弃。
至于google的skia只是名人效应,未必比AGG强多少,但skia做过整数优化必然暂时好一些,但代码数量巨大,显然没有agg简洁。
如果能够把AGG也做必要的定点整数化,效果一定会超一流,最简单的优化就是定义double=float然后编译就可以提升很多速度,因为float要比double快很多的 -- (这一点知道的人不多的)。

比如freetype2的26.4或16.16定点整数来实现浮点运算使得freetype2拥有非常好的效果,这也是agg可以效仿的地方,一旦定点数量上去了定点与浮点的差别就会非常明显。

我认为picasso是可以继续agg为完成的事业。支持作者!

#24


另外,建议把font部分改称可选,因为freetype2本身已经很好。

agg只是利用freetype2的轮廓,但有时候字体缺省输出的是点阵,没有轮廓,这是agg字体显示不出来,比如14点阵大小的sunsim.ttc字体就会优先点阵字体,除非关闭点阵字体才会输出轮廓。

没有font功能可以专心于2D图形的优化提高。

现代图像处理使用32位像素的格式已经足够,2D图形处理可以不需要支持各种像素格式,比如565,555,和24位的RGB格式,本人认为只需要专心RGBA/BGRA便可足够(本人更喜欢BGRA格式),因为物理显示输出的时候进行具体转换会很快,何况还有硬件加速功能自动完成呢。

#25


引用 23 楼 xiuxen 的回复:
本人打算使用你的picasso来实现2D Graphics功能,谢谢您的贡献!
我很久之在前便研究对比过cairo和agg,对AGG还是很喜欢的。但苦于他是C++模板接口没有规范化,难以使用,以致多次打算放弃。
至于google的skia只是名人效应,未必比AGG强多少,但skia做过整数优化必然暂时好一些,但代码数量巨大,显然没有agg简洁。
如果能够把AGG也做……


你的建议非常好,我也在做这方面的研究,感谢支持!

#26


不知何时才能追上你们的学习步伐