以下是我的讀取程式碼
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Processing;
var file = @"C:\lindexi\Image\Image.png";
using var image = Image.Load(file);
執行將會看到如下異常
SixLabors.ImageSharp.InvalidImageContentException:“CRC Error. PNG IDAT chunk is corrupt!”
這是因為我傳入的是一張損壞的圖片
解決方法就是透過 PngDecoder 解碼器,傳入 PngCrcChunkHandling.IgnoreAll 列舉,讓其忽略即可。修改之後程式碼如下
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Png;
using SixLabors.ImageSharp.Processing;
var file = @"C:\lindexi\Image\Image.png";
using var fileStream = File.OpenRead(file);
var decode = PngDecoder.Instance.Decode(new PngDecoderOptions()
{
PngCrcChunkHandling = PngCrcChunkHandling.IgnoreAll,
}, fileStream);
解碼之後即可獲取圖片的資訊,如獲取格式和尺寸
var decodeSize = decode.Size;
var pixelType = decode.PixelType;
SixLabors.ImageSharp 庫開源地址: https://github.com/SixLabors/ImageSharp
以下是安裝了 SixLabors.ImageSharp 庫的 csproj 專案檔案的程式碼
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.6" />
</ItemGroup>
</Project>
本文程式碼放在 github 和 gitee 上,可以使用如下命令列拉取程式碼。我整個程式碼倉庫比較龐大,使用以下命令列可以進行部分拉取,拉取速度比較快
先建立一個空資料夾,接著使用命令列 cd 命令進入此空資料夾,在命令列裡面輸入以下程式碼,即可獲取到本文的程式碼
git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin 63c9ca8f563ad8e5d4b26bc1a740b10af243abce
以上使用的是國內的 gitee 的源,如果 gitee 不能訪問,請替換為 github 的源。請在命令列繼續輸入以下程式碼,將 gitee 源換成 github 源進行拉取程式碼。如果依然拉取不到程式碼,可以發郵件向我要程式碼
git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin 63c9ca8f563ad8e5d4b26bc1a740b10af243abce
獲取程式碼之後,進入 Workbench/HegerkalailayiwuCulalajer 資料夾,即可獲取到原始碼
更多技術部落格,請參閱 部落格導航