هذا عبارة عن Java SDK لواجهات برمجة تطبيقات الصور القابلة للبرمجة Picsart وواجهات برمجة تطبيقات Picsart GenAI. يمكنك بسهولة تنفيذ العديد من الإجراءات باستخدام صورك فقط عن طريق إضافة بضعة أسطر من التعليمات البرمجية إلى مشاريع Java أو Kotlin الخاصة بك.
لاستخدام SDK، أضف التبعية التالية إلى ملف Maven pom.xml
الخاص بك:
< dependency >
< groupId >com.picsart groupId >
< artifactId >picsart-creative-apis-java-sdk artifactId >
< version >1.0.0 version >
dependency >
إذا كنت تستخدم Gradle، أضف ما يلي إلى ملف build.gradle
الخاص بك:
implementation ' com.picsart:picsart-creative-apis-java-sdk:1.0.0 '
تحذير : يستخدم SDK Reactor java وله تبعية متعدية على io.projectreactor:reactor-core
. إذا كنت تستخدم إصدارًا مختلفًا من Reactor، فقد تواجه مشكلات في التوافق. في هذه الحالة، يمكنك استبعاد التبعية المتعدية وإضافة نسختك الخاصة من Reactor إلى مشروعك.
import com . picsart . creativeapis . PicsartEnterprise ;
import com . picsart . creativeapis . image . ImageApi ;
import com . picsart . creativeapis . genai . GenAIApi ;
// Get an instance of Image API with default baseUrl and timeout
ImageApi imageApi = PicsartEnterprise . createImageApi ( "YOUR_API_KEY" );
// Get an instance of Image API with custom baseUrl and timeout
ImageApi customBaseUrlImageApi = PicsartEnterprise . createImageApi ( "YOUR_API_KEY" )
. withBaseUrl ( "https://custom-base-url.com" )
. withTimeout ( Duration . ofSeconds ( 10 ));
// Get an instance of GenAI API
GenAIApi genaiApi = PicsartEnterprise . createGenAIApi ( "YOUR_API_KEY" );
// Get an instance of GenAI API with custom baseUrl and timeout
GenAIApi customBaseUrlGenaiApi = PicsartEnterprise . createGenAIApi ( "YOUR_API_KEY" )
. withBaseUrl ( "https://custom-base-url.com" )
. withTimeout ( Duration . ofSeconds ( 10 ));
import com . picsart . busobj . image . ImageSource ;
import com . picsart . creativeapis . image . ImageApi ;
import com . picsart . creativeapis . image . models . ImageSource ;
import java . io . File ;
var imageUrl = ImageSource . fromUrl ( "https://url-to-your-image.jpg" );
// or
var imageFile = ImageSource . fromFile ( new File ( "path/to/your-image.jpg" ));
// or
var imageId = ImageSource . fromImageId ( "your-image-id" );
RemoveBackgroundParameters parameters = RemoveBackgroundParameters . builder ( mainImageSource )
. bgImage ( backgroundImageSource )
. build ();
Mono < RemoveBackgroundResult > removeBackgroundResultMono = imageApi . removeBackground ( parameters );
removeBackgroundResultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل، يرجى مراجعة RemoveBackgroundExample.java.
AdjustParameters parameters = AdjustParameters . builder ( imageSource )
. brightness ( 20 )
. contrast ( 30 )
. saturation ( 40 )
. build ();
Mono < AdjustResult > adjustResultMono = imageApi . adjust ( parameters );
adjustResultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة AdjustExample.java.
EffectParameters parameters = EffectParameters . builder ( imageSource , effectName )
. build ();
Mono < EffectResult > resultMono = imageApi . effect ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة EffectExample.java.
Mono < ListEffectsResult > resultMono = imageApi . listEffects ();
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Effects: " + result . effects ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة ListEffectsExample.java.
// معاينة التأثيرات
EffectsPreviewsParameters parameters = EffectsPreviewsParameters . builder ( imageSource )
. addEffectName ( effectName1 )
. addEffectName ( effectName2 )
. addEffectName ( effectName3 )
. format ( ImageFormat . PNG )
. build ();
Mono < EffectsPreviewsResult > resultMono = imageApi . effectsPreviews ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result images with effects" + result . effectsPreviews ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة EffectsPreviewsExample.java.
Mono < UploadResult > resultMono = imageApi . upload ( imageFile ); // either imageFile or imageUrl
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة UploadExample.java.
UpscaleParameters parameters = UpscaleParameters . builder ( imageSource )
. upscaleFactor ( 4 )
. format ( ImageFormat . PNG )
. build ();
Mono < UpscaleResult > resultMono = imageApi . upscale ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة UpscaleExample.java.
UltraUpscaleParameters parameters = UltraUpscaleParameters . builder ( imageSource )
. mode ( UpscaleMode . ASYNC )
. upscaleFactor ( 4 )
. format ( ImageFormat . PNG )
. build ();
Mono < UltraUpscaleResult > resultMono = imageApi . ultraUpscale ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة UltraUpscaleExample.java.
UltraEnhanceParameters parameters = UltraEnhanceParameters . builder ( imageSource )
. upscaleFactor ( 4 )
. format ( ImageFormat . PNG )
. build ();
Mono < UltraEnhanceResult > resultMono = imageApi . ultraEnhance ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة UltraEnhanceExample.java.
EnhanceFaceParameters parameters = EnhanceFaceParameters . builder ( imageSource )
. format ( ImageFormat . PNG )
. build ();
Mono < EnhanceFaceResult > resultMono = imageApi . enhanceFace ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة EnhanceFaceExample.java.
SurfaceMapParameters parameters = SurfaceMapParameters . builder ( mainImageSource , maskSource , stickerSource )
. format ( ImageFormat . PNG )
. build ();
Mono < SurfaceMapResult > resultMono = imageApi . surfaceMap ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل، يرجى مراجعة SurfaceMapExample.java.
BackgroundTextureParameters parameters = BackgroundTextureParameters . builder ( imageSource )
. format ( ImageFormat . PNG )
. width ( 800 )
. height ( 800 )
. pattern ( BackgroundTexturePattern . DIAMOND )
. build ();
Mono < BackgroundTextureResult > resultMono = imageApi . backgroundTexture ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل برجاء مراجعةBackgroundTextureExample.java.
Mono < BalanceResult > resultMono = imageApi . balance ();
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result credits: " + result . credits ());
});
لمزيد من التفاصيل يرجى مراجعة BalanceExample.java.
Text2ImageParameters parameters = Text2ImageParameters . builder ( "your-prompt" , "your-negative-prompt" )
. count ( 1 )
. width ( 512 )
. height ( 512 )
. build ();
Mono < Text2ImageResult > resultMono = genAIApi . text2Image ( parameters );
resultMono
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result Images: " + result . images ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة Text2ImageExample.java.
في المثال أدناه، نقوم بإنشاء صورة من النص، ثم إزالة الخلفية من الصورة التي تم إنشاؤها، وفي النهاية رفع مستوى النتيجة.
Text2ImageParameters parameters = Text2ImageParameters . builder ( "your-prompt" , "your-negative-prompt" )
. count ( 10 )
. width ( 512 )
. height ( 512 )
. build ();
Mono < Text2ImageResult > resultMono = genAIApi . text2Image ( parameters );
resultMono
. flatMapIterable ( Text2ImageResult :: images ) // flatMapIterable is used to iterate over the result images and process each of them individually
. flatMap ( image -> { // this will be called for each image in the result (10 times in this case)
RemoveBackgroundParameters removeBackgroundParameters = RemoveBackgroundParameters
. builder ( image . toImageSource ())
. build ();
return imageApi . removeBackground ( removeBackgroundParameters ); // remove background from each image
})
. flatMap ( removeBackgroundResult -> { // this will be called for each image in the result (10 times in this case)
var imageSource = removeBackgroundResult . image (). toImageSource ();
UpscaleParameters upscaleParameters = UpscaleParameters . builder ( imageSource )
. upscaleFactor ( 2 )
. build ();
return imageApi . upscale ( upscaleParameters ); // upscale each image
})
. subscribe ( result -> { // non-blocking subscribe
// each image will be printed separately
System . out . println ( "Result Image: " + result . image ());
System . out . println ( "Result metadata: " + result . metadata ());
});
لمزيد من التفاصيل يرجى مراجعة Text2ImageRemoveBackgroundUpscaleExample.java.
تتم معالجة استثناءات واجهة برمجة التطبيقات (API) بواسطة SDK ويتم طرحها على أنها ApiException أو فرع منها. إذا كانت حالة الاستجابة بخلاف 2xx، فسيتم طرح FailureResponseException
أو الطفل التابع لها وفقًا لرمز حالة الاستجابة. يتم تمييز الاستثناءات التي يمكن حلها عن طريق إعادة محاولة الطلب مثل ServiceUnavailableException
بواجهة قابلة للاسترداد. يمكنك التقاط هذه الاستثناءات وإعادة محاولة الطلب إذا لزم الأمر.
مثال على إعادة محاولة الطلب في حالة وجود استثناء قابل للاسترداد:
Mono < BalanceResult > resultMono = imageApi . balance ();
resultMono
// can be used to perform a side-effect in case of an error
. doOnError ( throwable -> {
System . out . println ( "exception: " + throwable . getMessage ());
})
// Retry 3 times with an initial backoff of 2 seconds.
// The delay between retries will increase exponentially up to max delay of 5 seconds.
. retryWhen ( Retry . backoff ( 3 , Duration . ofSeconds ( 2 ))
. maxBackoff ( Duration . ofSeconds ( 5 ))
. filter ( throwable -> throwable instanceof Recoverable )
. onRetryExhaustedThrow (( retryBackoffSpec , retrySignal ) -> new RuntimeException ( "Retry exhausted" , retrySignal . failure ()))
)
. subscribe ( result -> { // non-blocking subscribe
System . out . println ( "Result credits: " + result . credits ());
});
يتم توفير Picsart Creative APIs SDK بموجب ترخيص MIT الذي يمكن العثور عليه في ملف الترخيص. باستخدام هذا المشروع أو توزيعه أو المساهمة فيه، فإنك توافق على شروط وأحكام هذا الترخيص.
يحتوي هذا المشروع على بعض تبعيات الطرف الثالث، وقد يكون لكل منها ترخيص مستقل:
إذا كنت تحب Picsart Creative APIs SDK وترغب في المساهمة في هذا المشروع مفتوح المصدر، يرجى مراجعة دليل المساهمة.