Este es un contenedor estándar .NET para el servicio de compresión de imágenes TinyPNG.com. Este no es un producto oficial de TinyPNG.com.
Byte[]
, Stream
, File
y API Url
disponibles Instalar a través de Nuget
Install-Package TinyPNG
Instalar a través de 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
. Esto evitará la necesidad de incorporar dos espacios de nombres diferentes.CompressFromUrl
. Esto ahora está disponible a través de una nueva sobrecarga para Compress
que acepta un objeto Uri
.TinyPng
, antes era un poco confuso. La API ha cambiado desde V2, principalmente ya no necesita esperar cada paso individual del uso de la API TinyPNG, ahora puede encadenar las llamadas apropiadas ya que los métodos de extensión ahora operan en 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 " ) ;
También están disponibles más detalles sobre el resultado de la compresión en las propiedades Input
y Output
de una operación Compress
. Algunos ejemplos:
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 " ) ;
Existen ciertas combinaciones al especificar opciones de cambio de tamaño que no son compatibles con TinyPNG. También incluimos operaciones de cambio de tamaño fuertemente tipadas, según el tipo de cambio de tamaño que desee realizar.
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 ) ) ;
Las mismas API de ruta Byte[]
, Stream
, File
y Url
están disponibles a partir del resultado del método Resize()
.
Puede convertir imágenes a diferentes formatos utilizando el método Convert()
. Esto devolverá un objeto que contiene los datos de la imagen convertida.
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard ) ;
Al utilizar el formato Wildcard
, TinyPng devolverá el mejor tipo para la imagen proporcionada.
En el caso de que esté convirtiendo a una imagen y perdiendo transparencia, puede especificar un color de fondo para usar en la imagen.
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard , " #FF0000 " ) ;
El resultado de cualquier operación de compresión se puede almacenar directamente en el almacenamiento de Amazon S3. Recomiendo encarecidamente consultar la documentación de TinyPNG.com con respecto a cómo configurar el acceso S3 apropiado.
Si va a almacenar imágenes para la mayoría de las solicitudes en S3, puede pasar un objeto AmazonS3Configuration
al constructor que se utilizará para todas las solicitudes posteriores.
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 " ) ;
También puede pasar un objeto AmazonS3Configuration
directamente a llamadas a 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 " ) ;
Puede obtener una lectura del número de operaciones de compresión que ha realizado inspeccionando la propiedad CompressionCount
en el resultado de cualquier operación que haya realizado. Esto es útil para controlar el uso de su API.
var compressedCat = await png . Compress ( " cat.jpg " ) ;
compressedCat . CompressionCount ; // = 5
TinyPngClient puede tomar HttpClient como sobrecarga del constructor, cuya vida útil se puede controlar desde fuera de la biblioteca.
var httpClient = new HttpClient ( ) ;
var png = new TinyPngClient ( " yourSecretApiKey " , httpClient ) ;