هذا عبارة عن غلاف .NET قياسي حول خدمة ضغط الصور TinyPNG.com. هذا ليس منتجًا رسميًا من TinyPNG.com.
Byte[]
و Stream
و File
و Url
التثبيت عبر 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، ويمكنك الآن ربط الاستدعاءات المناسبة معًا حيث تعمل طرق الامتداد الآن على 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
من نتيجة طريقة 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 ) ;