目前,SkiaSharp不支持tiff图像.(它支持jpg,gif,bmp,png和其他一些.)
如何将tiff图像转换为SKBitmap对象?
一个想法:也许有一种有效的方法来转换tiff流> png流> SKBitmap对象?我不确定System.Drawing
能否有效处理tiff> png流.另一个可能的选择是LibTiff.Net,但需要一个如何将tiff流转换为png流的示例.
另一个想法:访问tiff像素并将其直接绘制到SKCanvas上?
其他想法?
如何在Xamarin表单的skiasharp中使用自定义字体。
我试过了
paint.Typeface = SKTypeface.FromFamilyName("CoText_Bd");
Run Code Online (Sandbox Code Playgroud)
和
paint.Typeface = SKTypeface.FromFile("CoText_Bd");
Run Code Online (Sandbox Code Playgroud)
但是两者都没有解决。我是否需要使用依赖项服务访问字体的路径?
我正在研究将SkiaSharp用于未来的项目,遵循GitHub上现有的文档:
https://developer.xamarin.com/guides/cross-platform/drawing/introduction/
我正在使用Windows 7上的Visual Studio 2013进行开发.我尝试使用Xamarin Android App项目类型,但它需要SkiaSharp软件包中的DllImportAttribute的营业执照.
我想知道是否有可能选择一个C#Visual Studio项目,如何能够显示SkiaSharp画布,如果是这样,我该怎么做?
我正在尝试在Xamarin.forms中使用SkiaSharp在图像上绘制一些多边形.图像从服务器下载,而不是在后台缓存.所以我宁愿不操纵图像本身,而是绘制一个新的画布并将其放置在图像顶部的新视图中,就像在屏幕截图中一样.(使用相对布局)正如您在屏幕截图中看到的那样,放置矩形不是问题,但"透明"部分并不是真正透明的.
第一个截图的代码:
using (var paint = new SKPaint ()) {
paint.IsAntialias = true;
using (var path = new SKPath ()) {
path.MoveTo (0f, 0f);
path.LineTo (width, height);
path.LineTo (0, width);
path.Close ();
paint.Color = SKColors.Orange;
canvas.DrawPath (path, paint);
}
}
Run Code Online (Sandbox Code Playgroud)
在第二次我尝试使用
canvas.Clear(SKColors.Transparent);
Run Code Online (Sandbox Code Playgroud)
但它只会改变为黑色背景.
有谁知道在滑雪视图中是否可以有完全透明的部分?
我想FormattedString
用SkiaSharp绘制iOS的Attributed Text或Xamarin.Forms等富文本,但我找不到如何.
我找到了这个DrawText
方法,但它是用一种颜色和一种字体进行简单的文本渲染.没有混合颜色和/或字体,也没有粗体,斜体,透视或下划线等样式.
我是否必须使用自己的富文本渲染逻辑?
在SkiaSharp中,当您从现有图像创建新图像时(例如调整大小时),如何使用原始图像的ICC配置文件保存新图像?
我正在寻找镜像位图,以便可以将图像及其镜像彼此相邻。我正在使用 SkiaSharp,我的位图是 SKBitmap,我将它们绘制在画布上。
canvas.Translate( -imageWidth/ 2.0f, -imageHeight/ 2.0f );
canvas.Scale( -1, 1,0,0 );
canvas.DrawBitmap( bitmap, new SKPoint( 0.0f, 0.0f ) );
canvas.Scale( -1, 1, 0, 0 );
canvas.Translate( imageWidth/ 2.0f, imageHeight / 2.0f );
Run Code Online (Sandbox Code Playgroud)
我将图像围绕原点居中,围绕 Y 轴镜像,在画布上绘制位图,然后撤消变换以获得结果。
我的问题似乎是,当我开始使用缩放方法时,位图就消失了。如果我画一个圆圈之类的东西就不会发生这种情况。
我的目标是计算用户手指围绕scren中心点的拖动,我尝试使用Math.Atan2()尝试了一些不好的尝试.仅供参考我在Xamarin应用程序中使用SkiaSharp,但为了简单起见我只需要帮助以下方案.
使用下面的截图可能有人告诉我产生以下结果的最佳方法?
A = 0度
B = 90度
C = 180度
D = 270度
我正在尝试使用 SkiaSharp SKDocument 类在 xamarin 中编写 PDF,但在 skCanvas.drawImage() 中使用“MyProject.Droid/Resources/Drawable”中的图像时遇到问题。我将图像存储在 ImageSource 中,我需要将其转换为 SKImage,但是如何转换?
SKDocument sKDocument =
SKDocument.CreatePdf("/storage/emulated/0/Teste5.pdf");
var canvas = sKDocument.BeginPage(2480, 3508);
canvas.Clear(SKColors.White);
Image image = new Image();
image.Source = "MyImage.png";
canvas.DrawImage();
Run Code Online (Sandbox Code Playgroud)
我需要将图像投射到 Skimage 才能绘制它
我正在尝试从 Blazor InputFile 组件上传多个图像:
<InputFile OnChange="@LoadFiles" multiple accept=".png, .jpg, .jpeg, .gif" />
Run Code Online (Sandbox Code Playgroud)
一旦进入内存,我需要使用 SkiaSharp 将它们的大小调整为最大宽/高 1000 像素。我为此创建了一个辅助方法,但它似乎在任何超过大约 4MB 的图像上失败。我通过搜索以及任何可用的(相当缺乏的)Microsoft 文档将以下逻辑拼凑在一起,因此我的方法可能完全错误:
using SkiaSharp;
public static byte[] Resize(byte[] fileContents, int maxWidth, int maxHeight)
{
using MemoryStream ms = new(fileContents);
using SKBitmap sourceBitmap = SKBitmap.Decode(ms); // <-- EXCEPTION HERE ON LARGER FILES
int height = Math.Min(maxHeight, sourceBitmap.Height);
int width = Math.Min(maxWidth, sourceBitmap.Width);
var quality = SKFilterQuality.High;
using SKBitmap scaledBitmap = sourceBitmap.Resize(new SKImageInfo(width, height), quality);
using SKImage scaledImage = SKImage.FromBitmap(scaledBitmap);
using SKData data = …
Run Code Online (Sandbox Code Playgroud) skiasharp ×10
c# ×8
xamarin ×7
skia ×3
.net-core ×2
.net ×1
.net-6.0 ×1
android ×1
bitmap ×1
libtiff.net ×1
math ×1
memorystream ×1
xamarin.ios ×1