Il s'agit d'un wrapper .NET Standard autour du service de compression d'images TinyPNG.com. Ce n'est pas un produit officiel de TinyPNG.com.
Byte[]
, Stream
, File
et Url
disponibles Installer via Nuget
Install-Package TinyPNG
Installer via 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
. Cela évitera d’avoir à introduire deux espaces de noms différents.CompressFromUrl
a été supprimée. Ceci est maintenant disponible via une nouvelle surcharge pour Compress
qui prend en charge un objet Uri
TinyPng
, c'était un peu un mélange de boîtiers auparavant. L'API a changé par rapport à la V2, principalement, vous n'avez plus besoin d'attendre chaque étape individuelle d'utilisation de l'API TinyPNG, vous pouvez désormais enchaîner les appels appropriés car les méthodes d'extension fonctionnent désormais sur 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 " ) ;
De plus amples détails sur le résultat de la compression sont également disponibles dans les propriétés Input
et Output
d'une opération Compress
. Quelques exemples :
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 " ) ;
Il existe certaines combinaisons lors de la spécification des options de redimensionnement qui ne sont pas compatibles avec TinyPNG. Nous incluons également des opérations de redimensionnement fortement typées, selon le type de redimensionnement que vous souhaitez effectuer.
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 ) ) ;
Les mêmes API de chemin Byte[]
, Stream
, File
et Url
sont disponibles à partir du résultat de la méthode Resize()
.
Vous pouvez convertir des images dans différents formats à l'aide de la méthode Convert()
. Cela renverra un objet contenant les données d'image converties.
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard ) ;
En utilisant le format Wildcard
, TinyPng renverra le meilleur type pour l'image fournie.
Dans le cas où vous convertissez en image et perdez la transparence, vous pouvez spécifier une couleur d'arrière-plan à utiliser pour l'image.
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard , " #FF0000 " ) ;
Le résultat de toute opération de compression peut être stocké directement sur le stockage Amazon S3. Je vous recommande fortement de vous référer à la documentation de TinyPNG.com pour savoir comment configurer l'accès S3 approprié.
Si vous envisagez de stocker des images pour la plupart des requêtes dans S3, vous pouvez transmettre un objet AmazonS3Configuration
au constructeur qui sera utilisé pour toutes les requêtes ultérieures.
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 " ) ;
Vous pouvez également transmettre un objet AmazonS3Configuration
directement dans les appels à 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 " ) ;
Vous pouvez obtenir une lecture du nombre d'opérations de compression que vous avez effectuées en inspectant la propriété CompressionCount
sur le résultat de toute opération que vous avez effectuée. Ceci est utile pour garder un œil sur votre utilisation de l’API.
var compressedCat = await png . Compress ( " cat.jpg " ) ;
compressedCat . CompressionCount ; // = 5
TinyPngClient peut prendre HttpClient comme surcharge de constructeur, dont la durée de vie peut être contrôlée depuis l'extérieur de la bibliothèque.
var httpClient = new HttpClient ( ) ;
var png = new TinyPngClient ( " yourSecretApiKey " , httpClient ) ;