标签: imagesharp

如何在 .Net Core 2.0 中使用 ZXing.Net 和 ImageSharp 创建条码图像

我正在尝试生成条形码图像。当我使用以下代码时,我可以创建一个base64字符串,但它给出了一个空白图像。我检查了内容不是空白或空白。

有代码正在使用,CoreCompat.System.Drawing但我无法使其工作,因为我在 OS X 环境中工作。

难道我做错了什么?

代码:

  [HtmlTargetElement("barcode")] 
  public class BarcodeHelper: TagHelper { 
      public override void Process(TagHelperContext context, TagHelperOutput output) { 
          var content = context.AllAttributes["content"].Value.ToString(); 
          var alt = context.AllAttributes["alt"].Value.ToString(); 
          var width = 250;  
          var height = 250;
          var margin = 0; 
          var barcodeWriter = new ZXing.BarcodeWriterPixelData { 
              Format = ZXing.BarcodeFormat.CODE_128, 
                  Options = new QrCodeEncodingOptions { 
                      Height = height, Width = width, Margin = margin 
                  } 
          }; 

          var pixelData = barcodeWriter.Write(content); 

          using (var image = Image.LoadPixelData<Rgba32>(pixelData.Pixels, width, …
Run Code Online (Sandbox Code Playgroud)

barcode asp.net-core-2.0 zxing.net imagesharp

4
推荐指数
1
解决办法
3226
查看次数

在aspnetcore Web API中使用图像的EXIF数据旋转/翻转图像

我有一个Web应用程序,用户可以在该Web应用程序上通过直接用手机拍摄照片来上传个人资料照片。由于图像的EXIF方向,前端必须在显示图片之前变换图像(旋转/翻转)。但是,我希望在保存图片之前在后端执行转换,以避免在前端进行转换。后端是用C#编写的.net core 2.0应用程序。

是否有人对可用于访问EXIF数据并进行转换的库提出建议。

到目前为止,我已经找到https://github.com/SixLabors/ImageSharp并浏览了有关如何使用它的文档。

c# image-processing asp.net-core asp.net-core-2.0 imagesharp

4
推荐指数
2
解决办法
1452
查看次数

如何合并两张图片?

将 ImageSharp 用于 .Net 核心,如何并排组合 2 个图像?例如:使 2 100x150px 变成 1 100x300px(或 200x150px)

c# .net-core imagesharp

4
推荐指数
1
解决办法
2579
查看次数

ImageSharp和字体高度

我的任务是创建要打印的图像。在图片上,我需要输入一个大写字母(大写[AZ])。

打印的图像尺寸可以在15厘米高和30厘米高之间变化(包括两者之间的任何尺寸)。

字母需要横跨打印图像的整个高度。

设置字体大小时,我看到您可以获取文本的大小。

using (Image<Rgba32> img = new Image<Rgba32>(imageWidth, imageHeight))
{
    img.Mutate(x => x.Fill(Rgba32.White));
    img.MetaData.HorizontalResolution = 96;
    img.MetaData.VerticalResolution = 96;
    var fo = SystemFonts.Find("Arial");
    var font = new Font(fo, 1350, FontStyle.Regular);
Run Code Online (Sandbox Code Playgroud)

我可以在这里获取文本的大小:

SizeF size = TextMeasurer.Measure(group.Text, new RendererOptions(font));
Run Code Online (Sandbox Code Playgroud)

但是,如您所见,我在这里将字体的大小硬编码。高度需要与图像的高度匹配。

有什么方法可以指定这一点,而又不会增加质量?有没有一种方法可以指定高度(以像素为单位)?也许我可以安全使用的字体大小有颜色?

当我将“字体大小”设置为“图像”的像素高度时,会看到以下信息: 在此处输入图片说明

我不确定为什么圆圈部分有间隙。我将左手文本的左上角位置设置为0,0 ....,将“ QWW”组的右上角点设置为图像的宽度,将0设置为Y。但是我希望它们要与尺寸和底部齐平。

c# .net-core imagesharp

4
推荐指数
2
解决办法
643
查看次数

使用 SixLabors.ImageSharp 在 C# 中创建 Image 的新实例

我正在尝试使用 SixLabors.Imagesharp 创建 Image 类的新实例,但出现错误。我使用的系统使用旧的 ImageSharp,我们想更新 nuget 包并使用 SixLabors.ImageSharp 代替。

代码曾经是这样的:OLD Code with ImageSharp:

var resultImage = new Image<Rgba32>(outputImageWidth, outputImageHeight);
Run Code Online (Sandbox Code Playgroud)

我尝试用 SixLabors.ImageSharp 编写的新代码完全相同,但这次我得到了按摩:

Severity Code Description   Project File Linem Suppression State
Error CS0315 The type 'SixLabors.ImageSharp.PixelFormats.Rgba32' cannot be used as type parameter 'TPixel' in the generic type or method 'Image<TPixel>'. There is no boxing conversion from 'SixLabors.ImageSharp.PixelFormats.Rgba32' to '?'.
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他方法来创建新图像,但都失败了。您知道如何使用 SixLabors.Imagesharp 创建新图像吗?

c# asp.net imagesharp

4
推荐指数
1
解决办法
6444
查看次数

如何使用 ImageSharp 清除图像的 EXIF 数据?

我发现了一个 GitHub 问题,显示如何通过将其 ExifProfile 设置为 null 来删除图像的 exif 数据:

 SixLabors.ImageSharp.Image image = Image.Load(imagePath);

 //remove exif
 image.Metadata.ExifProfile = null;
    
 //resize
 image.Mutate(x => x.Resize(width, height));
    
 //save
 SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder();
    
 encoder.Quality = 30; 
                        
 image.Save(thumbnailPath, encoder);
Run Code Online (Sandbox Code Playgroud)

...但它似乎对我不起作用——保存的 jpeg 大小相同,当我的操作系统检查时,它们向我显示相机的所有 EXIF 设置。当我对从另一个实用程序创建的图像进行相同的检查时,操作系统不会向我显示所有 EXIF 设置......所以我倾向于说这种 ImageSharp 技术没有正确地擦除它们。

任何想法?

https://github.com/SixLabors/ImageSharp/issues/400

exif .net-core imagesharp

4
推荐指数
1
解决办法
2262
查看次数

使用ImageSharp将Image <Rgba32>转换为Byte []

如何使用ImageSharp库将图像转换为字节数组?

ImageSharp库是否也可以根据EXIF方向建议/提供RotateMode和FlipMode?

imagesharp

3
推荐指数
1
解决办法
1859
查看次数

将 ImageUniqueID 插入 JPEG 的 EXIF 数据而不使用 .NET 修改图像

我需要在不修改图像内容的情况下将唯一 ID 插入图像文件 - 即它只是我想要修改的元数据。我从 JPEG 文件开始,因为有一个合适的 EXIF 属性可用:ImageUniqueID

我将 C# 与 .NET Core 3.1 一起用于ImageSharp 的这个练习。我可以使用以下代码使用 ImageSharp 更改 EXIF 数据(在没有现有记录检查的情况下显示简化等):

using (var image = Image.Load(filename))
            {
            var imageUniqueIdentifier = Guid.NewGuid().ToString().ToLower().Replace("-", "");
            image.Metadata.ExifProfile.SetValue(ExifTag.ImageUniqueID, imageUniqueIdentifier);

            var jpegEncoder = new JpegEncoder() { Quality = 100 };
            image.Save(filename, jpegEncoder);
            }
Run Code Online (Sandbox Code Playgroud)

我确实在 JpegEncoder 中使用了 Quality 设置,但仍然遇到了无法接受的质量下降或文件大小增加的问题。

有没有办法只读取元数据,更改它然后将其写回而根本不影响图像?

我还查看了MetadataExtractor.NET,但它没有写入功能,我很乐意查看其他 .NET Core 方法或库。

c# exif imagesharp

3
推荐指数
1
解决办法
426
查看次数

是否可以使用 SixLabors.ImageSharp 库转换图像格式?

我一直在研究这个库,目的是用 C# 创建图像处理管道。我希望它能够接收 .png 图像并将其转换为 .jpeg。但我还没有找到使用这个库来做到这一点的方法。有可能吗?有人能够成功做到这一点吗?

这是我最好的镜头:

Image<Rgba32> image1 = SixLabors.ImageSharp.Image.Load<Rgba32>(fileName, out IImageFormat format);

var encd = new JpegEncoder
                {
                    Quality = 80
                };

image.Save(outputFinalPath, encd);
Run Code Online (Sandbox Code Playgroud)

结果是将图像简单地保存为 .png。我是处理图像的新手,所以我可能会遗漏一些东西。

c# image image-processing image-formats imagesharp

3
推荐指数
1
解决办法
4646
查看次数

SixLabors ImageSharp 裁剪调整错误的宽度和高度

我使用 SixLabors.ImageSharp 使用以下代码调整照片大小:

https://www.nuget.org/packages/SixLabors.ImageSharp/
ASP .NET Core 5.0

输入照片:720x960px
预期输出:248x186px
实际结果:186x248px

为什么宽度会变成高度,反之亦然?

using (var stream = new MemoryStream())
{
    using var image = Image.Load(bytes);
    image.Mutate(x => x
        .Resize(new ResizeOptions
            {
                Mode = ResizeMode.Crop,
                Position = AnchorPositionMode.Center,
                Size = new Size(248, 186)
            })
        .BackgroundColor(Color.White));

    await image.SaveAsync(stream, new JpegEncoder() { Quality = 85 });
}
Run Code Online (Sandbox Code Playgroud)

c# imagesharp

3
推荐指数
1
解决办法
1985
查看次数