为啥 SkiaSharp.SKBitmap.Resize 返回 null?
Posted
技术标签:
【中文标题】为啥 SkiaSharp.SKBitmap.Resize 返回 null?【英文标题】:Why does SkiaSharp.SKBitmap.Resize returns null?为什么 SkiaSharp.SKBitmap.Resize 返回 null? 【发布时间】:2017-12-09 06:24:47 【问题描述】:documentation 说:
如果可以进行调整大小操作,则返回调整大小的位图 执行,否则为空。
这显然没有帮助。完全没有。 它至少可以给我们一个枚举/错误代码/任何东西。
所以我下载了 lib 的源代码,发现SKBitmaps.resize
最终调用了SKPixmap.Resize
,而后者又调用了SkiaApi.sk_bitmapscaler_resize
...
这就是路的尽头,因为SkiaApi.sk_bitmapscaler_resize
被实现为(here) 为extern
。
所以我开始下载实际的Skia(因为 SkiaSharp 只是一个瘦包装器)来尝试找出为什么有时这种方法会失败。
但我就是不知道SkiaApi.sk_bitmapscaler_resize
映射到哪个函数/方法。
谁能告诉我它映射到哪个函数? 甚至更好,为什么有时这种方法会失败?
【问题讨论】:
【参考方案1】:Google 代码有点模糊,这就是 SkiaSharp 文档受限的原因。
但是...查看代码,似乎源颜色类型和目标颜色类型都需要是 32 位平台颜色类型(Bgra8888 或 Rgba888)。
您还可以检查以确保像素地址 (GetPixels()
) 正确(不是 null
/IntPtr.Zero
)。
最后,确保目标大小为>= 1
。
【讨论】:
以上是关于为啥 SkiaSharp.SKBitmap.Resize 返回 null?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?