นี่คือ Java SDK ของ Picsart Programmable Image API และ Picsart GenAI API คุณสามารถดำเนินการต่างๆ กับรูปภาพของคุณได้อย่างง่ายดายเพียงเพิ่มโค้ดไม่กี่บรรทัดลงในโปรเจ็กต์ 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 และต้องการมีส่วนร่วมในโครงการโอเพ่นซอร์สนี้ โปรดตรวจสอบคู่มือการมีส่วนร่วม