Pixelbin Swift library helps you integrate Pixelbin with your iOS Application.
- Open Your Xcode Project:
- Launch Xcode and open your existing project or create a new one.
- Open the Swift Packages Tab:
- In the project navigator, select your project file to open the project settings.
- Select the target you want to add the package to.
- Click on the
Swift Packages
tab.
- Add a Swift Package:
- Click the
+
button at the bottom left of theSwift Packages
tab. - In the search bar, enter the URL of the repository:
https://github.com/pixelbin-io/pixelbin-swift-sdk.git
- Click the
- Specify Version Rules:
- Choose the version rule that fits your needs. You can select from:
- Branch: Specify a branch like
main
ormaster
. - Exact Version: Specify an exact version number.
- Range: Define a version range.
- Branch: Specify a branch like
- Choose the version rule that fits your needs. You can select from:
- Add the Package:
- Click
Next
to fetch the repository and validate the package. - After validation, select the package products you need and the target to which they should be added.
- Click
Finish
to add the package to your project.
- Click
- Add the dependency to your
Podfile
:
pod 'Pixelbin', '~> latest_version'
- Install the dependency:
pod install
- To add the Pixelbin Swift SDK as a Swift Package Manager (SPM) dependency to your iOS project using the provided URL, follow these steps:
import PixelBin
guard let imageFromUrl = PixelBin.shared.image(url: "https://cdn.pixelbin.io/v2/dummy-cloudname/original/__playground/playground-default.jpeg") else {
return
}
print(imageFromUrl.encoded)
// Create Image url from cloud, zone and other details
let imageFromDetails = PixelBin.shared.image(imagePath: imageFromUrl.imagePath, cloud: imageFromUrl.cloudName, transformations: imageFromUrl.transformations, version: imageFromUrl.version)
print(imageFromDetails.encoded)
import PixelBin
// Create Image url from cloud, zone and imagePath on cloud (Not local path)
let image = PixelBin.shared.image(imagePath: "example/logo/apple.jpg", cloud: "apple_cloud", zone: "south_asia")
print(imageFromDetails.encoded) // https://cdn.pixelbin.io/v2/apple_cloud/south_asia/original/example/logo/apple.jpg
let eraseTransformation = Transformation.erasebg() // Creating Erasebg Transformation
let resizeTransformation = Transformation.resize(height: 100, width: 100) // Creating Resize Transformation
image.addTransformation(eraseTransformation, resizeTransformation) // Applying transformation (as varargs, just keep passing all transformations)
let outputUrl = image.encoded // https://cdn.pixelbin.io/v2/apple_cloud/south_asia/erase.bg()~t.resize(h:100,w:100)/example/logo/apple.jpg
// Signed Url and Field can be generated via using Backed SDK for pixelbin or API to generate signed url for upload
// Assume imagePath: "example/logo/apple.jpg", cloud: "apple_cloud", zone: "south_asia" & generate details
let signUrl = "SIGNED_URL"
let fields = [] // META_DATA in value
let signedDetails = SignedDetails(url: signUrl, fields: fields)
// Url is local file path, other fields chunkSize: Int = 1024, concurrency: Int = 1
PixelBin.shared.upload(file: url, signedDetails: signedDetails) { result in
switch result {
case let .success(response):
if let image = response.0 {
print("Uploaded Image Url: \(image.encoded)") // https://cdn.pixelbin.io/v2/apple_cloud/south_asia/original/example/logo/apple.jpg
let eraseTransformation = Transformation.erasebg() // Creating Erasebg Transformation
let resizeTransformation = Transformation.tResize(height: 100, width: 100) // Creating Resize Transformation
image.addTransformation(eraseTransformation, resizeTransformation) // Applying transformation (as varargs, just keep passing all transformations)
print("Transformed Image Url: \(image.encoded)") // https://cdn.pixelbin.io/v2/apple_cloud/south_asia/erase.bg()~t.resize(h:100,w:100)/example/logo/apple.jpg
}
case let .failure(error):
print("Error: \(error.localizedDescription)")
}
}
Parameter | Type | Description |
---|---|---|
file (File) | File | File to upload to Pixelbin |
signedDetails (SignedDetails) | Object | Signed details generated with the Pixelbin Backend SDK |
chunkSize (Int) | Integer | Size of chunks to be uploaded in KB (default value is 1024) |
concurrency (Int) | Integer | Number of chunks to be uploaded in parallel API calls |
- Resolves with Image object on success.
- Rejects with error on failure.
Classifies the background of a product as plain, clean or busy
let t = Transformation.dbtDetect(
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
height | integer | 0 |
width | integer | 0 |
fit | enum: cover , contain , fill , inside , outside |
Resize.Fit.cover |
background | color | "000000" |
position | enum: top , bottom , left , right , right_top , right_bottom , left_top , left_bottom , center |
Resize.Position.center |
algorithm | enum: nearest , cubic , mitchell , lanczos2 , lanczos3 |
Resize.Algorithm.lanczos3 |
dpr | float | 1 |
let t = Transformation.tResize(
height: 0,
width: 0,
fit: Resize.Fit.cover,
background: "000000",
position: Resize.Position.center,
algorithm: Resize.Algorithm.lanczos3,
dpr: 1
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
quality | integer | 80 |
let t = Transformation.tCompress(
quality: 80
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
top | integer | 10 |
left | integer | 10 |
bottom | integer | 10 |
right | integer | 10 |
background | color | "000000" |
bordertype | enum: constant , replicate , reflect , wrap |
Extend.Bordertype.constant |
dpr | float | 1 |
let t = Transformation.tExtend(
top: 10,
left: 10,
bottom: 10,
right: 10,
background: "000000",
bordertype: Extend.Bordertype.constant,
dpr: 1
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
top | integer | 10 |
left | integer | 10 |
height | integer | 50 |
width | integer | 20 |
boundingbox | bbox | nil |
let t = Transformation.tExtract(
top: 10,
left: 10,
height: 50,
width: 20,
boundingbox: nil
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
threshold | integer | 10 |
let t = Transformation.tTrim(
threshold: 10
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
angle | integer | 0 |
background | color | "000000" |
let t = Transformation.tRotate(
angle: 0,
background: "000000"
)
Basic Transformations
let t = Transformation.tFlip(
)
Basic Transformations
let t = Transformation.tFlop(
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
sigma | float | 1.5 |
let t = Transformation.tSharpen(
sigma: 1.5
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
size | integer | 3 |
let t = Transformation.tMedian(
size: 3
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
sigma | float | 0.3 |
dpr | float | 1 |
let t = Transformation.tBlur(
sigma: 0.3,
dpr: 1
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
background | color | "000000" |
let t = Transformation.tFlatten(
background: "000000"
)
Basic Transformations
let t = Transformation.tNegate(
)
Basic Transformations
let t = Transformation.tNormalise(
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
a | integer | 1 |
b | integer | 0 |
let t = Transformation.tLinear(
a: 1,
b: 0
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
brightness | float | 1 |
saturation | float | 1 |
hue | integer | 90 |
let t = Transformation.tModulate(
brightness: 1,
saturation: 1,
hue: 90
)
Basic Transformations
let t = Transformation.tGrey(
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
color | color | "000000" |
let t = Transformation.tTint(
color: "000000"
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
format | enum: jpeg , png , webp , tiff , avif , bmp , heif |
Toformat.Format.jpeg |
quality | enum: 100 , 95 , 90 , 85 , 80 , 75 , 70 , 60 , 50 , 40 , 30 , 20 , 10 , best , good , eco , low |
Toformat.Quality._75 |
let t = Transformation.tToformat(
format: Toformat.Format.jpeg,
quality: Toformat.Quality._75
)
Basic Transformations
Parameter | Type | Default |
---|---|---|
density | integer | 300 |
let t = Transformation.tDensity(
density: 300
)
21. tMerge(mode, image, transformation, background, height, width, top, left, gravity, blend, tile, List of bboxes, List of Polygons)
Basic Transformations
Parameter | Type | Default |
---|---|---|
mode | enum: overlay , underlay , wrap |
Merge.Mode.overlay |
image | file | "" |
transformation | custom | "" |
background | color | "00000000" |
height | integer | 0 |
width | integer | 0 |
top | integer | 0 |
left | integer | 0 |
gravity | enum: northwest , north , northeast , east , center , west , southwest , south , southeast , custom |
Merge.Gravity.center |
blend | enum: over , in , out , atop , dest , dest-over , dest-in , dest-out , dest-atop , xor , add , saturate , multiply , screen , overlay , darken , lighten , colour-dodge , color-dodge , colour-burn , color-burn , hard-light , soft-light , difference , exclusion |
Merge.Blend.over |
tile | boolean | false |
listofbboxes | bboxList | nil |
listofpolygons | polygonList | nil |
let t = Transformation.tMerge(
mode: Merge.Mode.overlay,
image: "",
transformation: "",
background: "00000000",
height: 0,
width: 0,
top: 0,
left: 0,
gravity: Merge.Gravity.center,
blend: Merge.Blend.over,
tile: false,
listofbboxes: nil,
listofpolygons: nil
)
Artifact Removal Plugin
let t = Transformation.afRemove(
)
Detect objects and text in images
Parameter | Type | Default |
---|---|---|
maximumlabels | integer | 5 |
minimumconfidence | integer | 55 |
let t = Transformation.awsrekDetectlabels(
maximumlabels: 5,
minimumconfidence: 55
)
Detect objects and text in images
Parameter | Type | Default |
---|---|---|
minimumconfidence | integer | 55 |
let t = Transformation.awsrekModeration(
minimumconfidence: 55
)
AI Background Generator
Parameter | Type | Default |
---|---|---|
backgroundprompt | custom | "YSBmb3Jlc3QgZnVsbCBvZiBvYWsgdHJlZXMsd2l0aCBicmlnaHQgbGlnaHRzLCBzdW4gYW5kIGEgbG90IG9mIG1hZ2ljLCB1bHRyYSByZWFsaXN0aWMsIDhr" |
focus | enum: Product , Background |
BackgroundGenerator.Focus.product |
negativeprompt | custom | "" |
seed | integer | 123 |
let t = Transformation.generateBg(
backgroundprompt: "YSBmb3Jlc3QgZnVsbCBvZiBvYWsgdHJlZXMsd2l0aCBicmlnaHQgbGlnaHRzLCBzdW4gYW5kIGEgbG90IG9mIG1hZ2ljLCB1bHRyYSByZWFsaXN0aWMsIDhr",
focus: BackgroundGenerator.Focus.product,
negativeprompt: "",
seed: 123
)
1. bgExtend(Bounding Box, Prompt, Negative Prompt, Strength, Guidance Scale, Number of inference steps, Color Adjust, seed)
AI Image Extender
Parameter | Type | Default |
---|---|---|
boundingbox | bbox | nil |
prompt | custom | "" |
negativeprompt | custom | "" |
strength | float | 0.999 |
guidancescale | integer | 8 |
numberofinferencesteps | integer | 10 |
coloradjust | boolean | false |
seed | integer | 123 |
let t = Transformation.bgExtend(
boundingbox: nil,
prompt: "",
negativeprompt: "",
strength: 0.999,
guidancescale: 8,
numberofinferencesteps: 10,
coloradjust: false,
seed: 123
)
AI Variation Generator
Parameter | Type | Default |
---|---|---|
generatevariationprompt | custom | "" |
noofvariations | integer | 1 |
seed | integer | 0 |
autoscale | boolean | true |
let t = Transformation.vgGenerate(
generatevariationprompt: "",
noofvariations: 1,
seed: 0,
autoscale: true
)
EraseBG Background Removal Module
Parameter | Type | Default |
---|---|---|
industrytype | enum: general , ecommerce , car , human , object |
EraseBG.Industrytype.general |
addshadow | boolean | false |
refine | boolean | true |
let t = Transformation.eraseBg(
industrytype: EraseBG.Industrytype.general,
addshadow: false,
refine: true
)
Detect content and text in images
Parameter | Type | Default |
---|---|---|
maximumlabels | integer | 5 |
let t = Transformation.googlevisDetectlabels(
maximumlabels: 5
)
Image Centering Module
Parameter | Type | Default |
---|---|---|
distancepercentage | integer | 10 |
let t = Transformation.imcDetect(
distancepercentage: 10
)
1. icCrop(Required Width, Required Height, Padding Percentage, Maintain Original Aspect, Aspect Ratio, Gravity Towards, Preferred Direction, Object Type)
Intelligent Crop Plugin
Parameter | Type | Default |
---|---|---|
requiredwidth | integer | 0 |
requiredheight | integer | 0 |
paddingpercentage | integer | 0 |
maintainoriginalaspect | boolean | false |
aspectratio | string | "" |
gravitytowards | enum: object , foreground , face , none |
IntelligentCrop.Gravitytowards.none |
preferreddirection | enum: north_west , north , north_east , west , center , east , south_west , south , south_east |
IntelligentCrop.Preferreddirection.center |
objecttype | enum: airplane , apple , backpack , banana , baseball_bat , baseball_glove , bear , bed , bench , bicycle , bird , boat , book , bottle , bowl , broccoli , bus , cake , car , carrot , cat , cell_phone , chair , clock , couch , cow , cup , dining_table , dog , donut , elephant , fire_hydrant , fork , frisbee , giraffe , hair_drier , handbag , horse , hot_dog , keyboard , kite , knife , laptop , microwave , motorcycle , mouse , orange , oven , parking_meter , person , pizza , potted_plant , refrigerator , remote , sandwich , scissors , sheep , sink , skateboard , skis , snowboard , spoon , sports_ball , stop_sign , suitcase , surfboard , teddy_bear , tennis_racket , tie , toaster , toilet , toothbrush , traffic_light , train , truck , tv , umbrella , vase , wine_glass , zebra |
IntelligentCrop.Objecttype.person |
let t = Transformation.icCrop(
requiredwidth: 0,
requiredheight: 0,
paddingpercentage: 0,
maintainoriginalaspect: false,
aspectratio: "",
gravitytowards: IntelligentCrop.Gravitytowards.none,
preferreddirection: IntelligentCrop.Preferreddirection.center,
objecttype: IntelligentCrop.Objecttype.person
)
Intelligent Masking
Parameter | Type | Default |
---|---|---|
replacementimage | file | "" |
detector | enum: face , text , number_plate |
IntelligentMasking.Detector.number_plate |
masktype | enum: fill_black , pixelate , blur |
IntelligentMasking.Masktype.fill_black |
let t = Transformation.imMask(
replacementimage: "",
detector: IntelligentMasking.Detector.number_plate,
masktype: IntelligentMasking.Masktype.fill_black
)
Classifies whether objects in the image are single or multiple
let t = Transformation.ocDetect(
)
Detect NSFW content in images
Parameter | Type | Default |
---|---|---|
minimumconfidence | float | 0.5 |
let t = Transformation.nsfwDetect(
minimumconfidence: 0.5
)
Number Plate Detection Plugin
let t = Transformation.numplateDetect(
)
Detect bounding boxes of objects in the image
let t = Transformation.odDetect(
)
Calculates the percentage of the main object area relative to image dimensions.
Parameter | Type | Default |
---|---|---|
objectthresholdpercent | integer | 50 |
let t = Transformation.cosDetect(
objectthresholdpercent: 50
)
OCR Module
Parameter | Type | Default |
---|---|---|
detectonly | boolean | false |
let t = Transformation.ocrExtract(
detectonly: false
)
PDF Watermark Removal Plugin
let t = Transformation.pwrRemove(
)
AI Product Tagging
let t = Transformation.prTag(
)
Classifies whether the product in the image is completely visible or not
let t = Transformation.cpvDetect(
)
1. qrGenerate(width, height, image, margin, qRTypeNumber, qrErrorCorrectionLevel, imageSize, imageMargin, dotsColor, dotsType, dotsBgColor, cornerSquareColor, cornerSquareType, cornerDotsColor, cornerDotsType)
QRCode Plugin
Parameter | Type | Default |
---|---|---|
width | integer | 300 |
height | integer | 300 |
image | custom | "" |
margin | integer | 0 |
qrtypenumber | integer | 0 |
qrerrorcorrectionlevel | enum: L , M , Q , H |
Generate.Qrerrorcorrectionlevel.q |
imagesize | float | 0.4 |
imagemargin | integer | 0 |
dotscolor | color | "000000" |
dotstype | enum: rounded , dots , classy , classy-rounded , square , extra-rounded |
Generate.Dotstype.square |
dotsbgcolor | color | "ffffff" |
cornersquarecolor | color | "000000" |
cornersquaretype | enum: dot , square , extra-rounded |
Generate.Cornersquaretype.square |
cornerdotscolor | color | "000000" |
cornerdotstype | enum: dot , square |
Generate.Cornerdotstype.dot |
let t = Transformation.qrGenerate(
width: 300,
height: 300,
image: "",
margin: 0,
qrtypenumber: 0,
qrerrorcorrectionlevel: Generate.Qrerrorcorrectionlevel.q,
imagesize: 0.4,
imagemargin: 0,
dotscolor: "000000",
dotstype: Generate.Dotstype.square,
dotsbgcolor: "ffffff",
cornersquarecolor: "000000",
cornersquaretype: Generate.Cornersquaretype.square,
cornerdotscolor: "000000",
cornerdotstype: Generate.Cornerdotstype.dot
)
QRCode Plugin
let t = Transformation.qrScan(
)
Remove background from any image
let t = Transformation.removeBg(
)
AI Soft Shadow Generator
Parameter | Type | Default |
---|---|---|
backgroundimage | file | nil |
backgroundcolor | color | "ffffff" |
shadowangle | float | 120 |
shadowintensity | float | 0.5 |
let t = Transformation.shadowGen(
backgroundimage: nil,
backgroundcolor: "ffffff",
shadowangle: 120,
shadowintensity: 0.5
)
Super Resolution Module
Parameter | Type | Default |
---|---|---|
type0 | enum: 2x , 4x , 8x |
SuperResolution.Type0._2x |
enhanceface | boolean | false |
model | enum: Picasso , Flash |
SuperResolution.Model.picasso |
enhancequality | boolean | false |
let t = Transformation.srUpscale(
type0: SuperResolution.Type0._2x,
enhanceface: false,
model: SuperResolution.Model.picasso,
enhancequality: false
)
Vertex AI based transformations
Parameter | Type | Default |
---|---|---|
backgroundprompt | custom | "YSBmb3Jlc3QgZnVsbCBvZiBvYWsgdHJlZXMsd2l0aCBicmlnaHQgbGlnaHRzLCBzdW4gYW5kIGEgbG90IG9mIG1hZ2ljLCB1bHRyYSByZWFsaXN0aWMsIDhr" |
negativeprompt | custom | "" |
seed | integer | 22 |
guidancescale | integer | 60 |
let t = Transformation.vertexaiGeneratebg(
backgroundprompt: "YSBmb3Jlc3QgZnVsbCBvZiBvYWsgdHJlZXMsd2l0aCBicmlnaHQgbGlnaHRzLCBzdW4gYW5kIGEgbG90IG9mIG1hZ2ljLCB1bHRyYSByZWFsaXN0aWMsIDhr",
negativeprompt: "",
seed: 22,
guidancescale: 60
)
Vertex AI based transformations
let t = Transformation.vertexaiRemovebg(
)
Vertex AI based transformations
Parameter | Type | Default |
---|---|---|
type0 | enum: x2 , x4 |
Upscale.Type0.x2 |
let t = Transformation.vertexaiUpscale(
type0: Upscale.Type0.x2
)
Video Watermark Removal Plugin
let t = Transformation.wmvRemove(
)
Video Upscaler Plugin
let t = Transformation.vsrUpscale(
)
Classifies wear type and view type of products in the image
let t = Transformation.vdDetect(
)
Watermark Removal Plugin
Parameter | Type | Default |
---|---|---|
removetext | boolean | false |
removelogo | boolean | false |
box1 | string | "0_0_100_100" |
box2 | string | "0_0_0_0" |
box3 | string | "0_0_0_0" |
box4 | string | "0_0_0_0" |
box5 | string | "0_0_0_0" |
let t = Transformation.wmRemove(
removetext: false,
removelogo: false,
box1: "0_0_100_100",
box2: "0_0_0_0",
box3: "0_0_0_0",
box4: "0_0_0_0",
box5: "0_0_0_0"
)
Watermark Detection Plugin
Parameter | Type | Default |
---|---|---|
detecttext | boolean | false |
let t = Transformation.wmcDetect(
detecttext: false
)