Ini adalah pembungkus Standar .NET di sekitar layanan kompresi gambar TinyPNG.com. Ini bukan produk resmi TinyPNG.com.
Byte[]
, Stream
, File
dan Url
API tersedia Instal melalui Nuget
Install-Package TinyPNG
Instal melalui 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
. Ini akan menghindari keharusan membawa dua namespace yang berbeda.CompressFromUrl
telah dihapus. Ini sekarang tersedia melalui kelebihan beban baru untuk Compress
yang mengambil objek Uri
TinyPng
, sebelumnya casingnya sedikit tercampur. API telah berubah dari V2, terutama Anda tidak perlu lagi menunggu setiap langkah dalam menggunakan API TinyPNG, Anda sekarang dapat merangkai panggilan yang sesuai karena metode ekstensi sekarang beroperasi pada 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 " ) ;
Rincian lebih lanjut tentang hasil kompresi juga tersedia di properti Input
dan Output
dari operasi Compress
. Beberapa contoh:
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 " ) ;
Ada kombinasi tertentu saat menentukan opsi pengubahan ukuran yang tidak kompatibel dengan TinyPNG. Kami juga menyertakan operasi pengubahan ukuran yang sangat diketik, bergantung pada jenis pengubahan ukuran yang ingin Anda lakukan.
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 ) ) ;
API jalur Byte[]
, Stream
, File
dan Url
yang sama tersedia dari hasil metode Resize()
.
Anda dapat mengonversi gambar ke format berbeda menggunakan metode Convert()
. Ini akan mengembalikan objek yang berisi data gambar yang dikonversi.
using var png = new TinyPngClient ( " yourSecretApiKey " ) ;
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard ) ;
Dengan menggunakan format Wildcard
, TinyPng akan mengembalikan tipe terbaik untuk gambar yang disediakan.
Jika Anda mengonversi ke gambar dan kehilangan transparansi, Anda dapat menentukan warna latar belakang yang akan digunakan untuk gambar tersebut.
var compressAndConvert = await png . Compress ( " cat.png " ) . Convert ( ConvertImageFormat . Wildcard , " #FF0000 " ) ;
Hasil dari setiap operasi kompres dapat disimpan langsung ke penyimpanan Amazon S3. Saya sangat menyarankan untuk merujuk pada dokumentasi TinyPNG.com sehubungan dengan cara mengonfigurasi akses S3 yang sesuai.
Jika Anda akan menyimpan gambar untuk sebagian besar permintaan ke S3, maka Anda dapat meneruskan objek AmazonS3Configuration
ke konstruktor yang akan digunakan untuk semua permintaan berikutnya.
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 " ) ;
Anda juga dapat meneruskan objek AmazonS3Configuration
langsung ke panggilan ke 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 " ) ;
Anda bisa membaca jumlah operasi kompresi yang telah Anda lakukan dengan memeriksa properti CompressionCount
pada hasil operasi apa pun yang telah Anda lakukan. Ini berguna untuk mengawasi penggunaan API Anda.
var compressedCat = await png . Compress ( " cat.jpg " ) ;
compressedCat . CompressionCount ; // = 5
TinyPngClient dapat menggunakan HttpClient sebagai kelebihan konstruktor, yang masa pakainya dapat dikontrol dari luar perpustakaan.
var httpClient = new HttpClient ( ) ;
var png = new TinyPngClient ( " yourSecretApiKey " , httpClient ) ;