
clarifai2.dto.input.ClarifaiImage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Clarifai Java API Client
The newest version!
package clarifai2.dto.input;
import clarifai2.internal.grpc.api.ImageOuterClass;
import clarifai2.exception.ClarifaiException;
import clarifai2.internal.InternalUtil;
import clarifai2.internal.JSONAdapterFactory;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import static clarifai2.internal.InternalUtil.assertJsonIs;
import static clarifai2.internal.InternalUtil.fromJson;
@SuppressWarnings("NullableProblems")
@JsonAdapter(ClarifaiImage.Adapter.class)
public abstract class ClarifaiImage implements ClarifaiInputValue {
@NotNull public static ClarifaiFileImage of(@NotNull byte[] imageBytes) {
return new AutoValue_ClarifaiFileImage(imageBytes);
}
@NotNull public static ClarifaiFileImage of(@NotNull File imageFile) {
return of(InternalUtil.read(imageFile));
}
@NotNull public static ClarifaiURLImage of(@NotNull String imageURL) {
final URL result;
try {
result = new URL(imageURL);
} catch (MalformedURLException e) {
throw new ClarifaiException("Could not parse URL " + imageURL, e);
}
return of(result);
}
@NotNull public static ClarifaiURLImage of(@NotNull URL imageURL) {
return new AutoValue_ClarifaiURLImage(imageURL);
}
@Nullable public Crop crop() {
throw new ClarifaiException("The `crop` method is not used/supported by ClarifaiImage.");
}
@NotNull public ClarifaiImage withCrop(@NotNull Crop crop) {
throw new ClarifaiException("The `withCrop` method is not used/supported by ClarifaiImage.");
}
@NotNull public ImageOuterClass.Image serialize() {
return serialize(false);
}
@NotNull abstract public ImageOuterClass.Image serialize(boolean allowDuplicateUrl);
@NotNull public static ClarifaiImage deserialize(ImageOuterClass.Image image) {
return !image.getUrl().equals("") ?
ClarifaiURLImage.deserializeInner(image) :
ClarifaiFileImage.deserializeInner(image);
}
static class Adapter extends JSONAdapterFactory {
@Nullable @Override protected Serializer serializer() {
return new Serializer() {
@NotNull @Override public JsonElement serialize(@Nullable ClarifaiImage value, @NotNull Gson gson) {
if (value == null) {
return JsonNull.INSTANCE;
}
return gson.toJsonTree(value, value.getClass());
}
};
}
@Nullable @Override protected Deserializer deserializer() {
return new Deserializer() {
@Nullable @Override
public ClarifaiImage deserialize(
@NotNull JsonElement json,
@NotNull TypeToken type,
@NotNull Gson gson) {
return fromJson(
gson,
json,
assertJsonIs(json, JsonObject.class).has("url") ? ClarifaiURLImage.class : ClarifaiFileImage.class
);
}
};
}
@NotNull @Override protected TypeToken typeToken() {
return new TypeToken() {};
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy