นี่คือ wrapper มาตรฐาน .NET สำหรับบริการบีบอัดรูปภาพ TinyPNG.com นี่ไม่ใช่ผลิตภัณฑ์ 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
วิธีนี้จะหลีกเลี่ยงความจำเป็นในการนำเนมสเปซที่แตกต่างกันสองรายการCompressFromUrl
ได้ถูกลบออกแล้ว ขณะนี้สามารถใช้งานได้ผ่านการโอเวอร์โหลดใหม่สำหรับ Compress
ซึ่งรับออบเจ็กต์ Uri
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 " ) ;
รายละเอียดเพิ่มเติมเกี่ยวกับผลลัพธ์ของการบีบอัดยังมีอยู่ในคุณสมบัติ Input
และ Output
ของการดำเนินการ Compress
อีกด้วย ตัวอย่างบางส่วน:
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 ) ) ;
Byte[]
, Stream
, File
และ Url
path API เดียวกันนั้นมีให้ใช้งานจากผลลัพธ์ของวิธี Resize()
คุณสามารถแปลงรูปภาพเป็นรูปแบบต่างๆ ได้โดยใช้วิธี 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 ได้โดยตรง ฉันขอแนะนำอย่างยิ่งให้อ้างอิงถึงเอกสารของ TinyPNG.com เกี่ยวกับวิธีการกำหนดค่าการเข้าถึง S3 ที่เหมาะสม
หากคุณกำลังจะจัดเก็บรูปภาพสำหรับคำขอส่วนใหญ่ลงใน 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 ) ;