これは、TinyPNG.com 画像圧縮サービスの .NET Standard ラッパーです。これは TinyPNG.com の公式製品ではありません。
Byte[]
、 Stream
、 File
およびUrl
API が利用可能Nuget 経由でインストールする
Install-Package TinyPNG
dotnet
経由でインストールする
dotnet add package TinyPNG
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var result = await png . Compress ( " cat.jpg " ) ;
//URL to your compressed version
result . Output . Url ;
TinyPng
名前空間に存在するように変更されました。これにより、2 つの異なる名前空間を導入する必要がなくなります。CompressFromUrl
メソッドは削除されました。これは、 Uri
オブジェクトを受け取るCompress
の新しいオーバーロードを通じて利用できるようになりました。TinyPng
で名前空間を標準化しましたが、以前は大文字と小文字が少し混在していました。 API は V2 から変更されており、主に TinyPNG API を使用する個々のステップを待つ必要がなくなり、拡張メソッドがTask<T>
で動作するようになったので、適切な呼び出しをチェーンできるようになりました。
// create an instance of the TinyPngClient
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
// Create a task to compress an image.
// this gives you the information about your image as stored by TinyPNG
// they don't give you the actual bits (as you may want to chain this with a resize
// operation without caring for the originally sized image).
var compressImageTask = png . Compress ( " pathToFile or byte array or stream " ) ;
// or `CompressFromUrl` if compressing from a remotely hosted image.
var compressFromUrlImageTask = png . CompressFromUrl ( " image url " ) ;
// If you want to actually save this compressed image off
// it will need to be downloaded
var compressedImage = await compressImageTask . Download ( ) ;
// you can then get the bytes
var bytes = await compressedImage . GetImageByteData ( ) ;
// get a stream instead
var stream = await compressedImage . GetImageStreamData ( ) ;
// or just save to disk
await compressedImage . SaveImageToDisk ( " pathToSaveImage " ) ;
// Putting it all together
await png . Compress ( " path " )
. Download ( )
. SaveImageToDisk ( " savedPath " ) ;
圧縮結果の詳細については、 Compress
操作のInput
プロパティとOutput
プロパティでも確認できます。いくつかの例:
var result = await png . Compress ( " pathToFile or byte array or stream " ) ;
// old size
result . Input . Size ;
// new size
result . Output . Size ;
// URL of the compressed Image
result . Output . Url ;
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressImageTask = png . Compress ( " pathToFile or byte array or stream " ) ;
var resizedImageTask = compressImageTask . Resize ( width , height ) ;
await resizedImageTask . SaveImageToDisk ( " pathToSaveImage " ) ;
// altogether now....
await png . Compress ( " pathToFile " )
. Resize ( width , height )
. SaveImageToDisk ( " pathToSaveImage " ) ;
サイズ変更オプションを指定する場合、TinyPNG と互換性のない特定の組み合わせがあります。実行するサイズ変更の種類に応じて、厳密に型指定されたサイズ変更操作も含まれています。
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressTask = png . Compress ( " pathToFile or byte array or stream " ) ;
await compressTask . Resize ( new ScaleWidthResizeOperation ( width ) ) ;
await compressTask . Resize ( new ScaleHeightResizeOperation ( height ) ) ;
await compressTask . Resize ( new FitResizeOperation ( width , height ) ) ;
await compressTask . Resize ( new CoverResizeOperation ( width , height ) ) ;
Resize()
メソッドの結果から、同じByte[]
、 Stream
、 File
およびUrl
パス API を利用できます。
Convert()
メソッドを使用して、画像をさまざまな形式に変換できます。これにより、変換された画像データを含むオブジェクトが返されます。
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard ) ;
Wildcard
形式を使用すると、TinyPng は指定された画像に最適なタイプを返します。
画像に変換して透明度を失うシナリオでは、画像に使用する背景色を指定できます。
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard , " #FF0000 " ) ;
圧縮操作の結果は、Amazon S3 ストレージに直接保存できます。適切な S3 アクセスを構成する方法については、TinyPNG.com のドキュメントを参照することを強くお勧めします。
ほとんどのリクエストの画像を S3 に保存する場合は、後続のすべてのリクエストで使用されるAmazonS3Configuration
オブジェクトをコンストラクターに渡すことができます。
using var png = new TinyPngClient ( " yourSecretApiKey " ,
new AmazonS3Configuration ( " awsAccessKeyId " , " awsSecretAccessKey " , " bucket " , " region " ) ) ;
var compressedCat = await png . Compress ( " cat.jpg " ) ;
var s3Uri = await png . SaveCompressedImageToAmazonS3 ( compressedCat , " file-name.png " ) ;
// If you'd like to override the particular bucket or region
// an image is being stored to from what is specified in the AmazonS3Configuration:
var s3UriInNewSpot = await png . SaveCompressedImageToAmazonS3 (
compressedCat ,
" file-name.png " ,
bucketOverride : " different-bucket " ,
regionOverride : " different-region " ) ;
AmazonS3Configuration
オブジェクトをSaveCompressedImageToAmazonS3
への呼び出しに直接渡すこともできます。
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressedCat = await png . Compress ( " cat.jpg " ) ;
var s3Uri = await png . SaveCompressedImageToAmazonS3 ( compressedCat ,
new AmazonS3Configuration (
" awsAccessKeyId " ,
" awsSecretAccessKey " ,
" bucket " ,
" region " ) , " file-name.png " ) ;
実行した圧縮操作の数を読み取るには、実行した操作の結果のCompressionCount
プロパティを検査します。これは、API の使用状況を監視するのに役立ちます。
var compressedCat = await png . Compress ( " cat.jpg " ) ;
compressedCat . CompressionCount ; // = 5
TinyPngClient は HttpClient をコンストラクター オーバーロードとして受け取ることができ、その有効期間はライブラリの外部から制御できます。
var httpClient = new HttpClient ( ) ;
var png = new TinyPngClient ( " yourSecretApiKey " , httpClient ) ;