Can I add metadata to images?

Follow

Comments

13 comments

  • Avatar
    Yves Jaques

    Dear Itay,

    Are there any plans to allow users to view context metadata from the media library UI? This is actually a crucial use case for us and as a brand new user of the Advanced plan I'm really disappointed it doesn't support this, it's such an obvious use case to be able to easily view the custom key value pairs you need for your organizational purposes.

  • Avatar
    Itay Taragano

    UPDATE

    Now custom metadata values can be displayed, added and removed via the interactive Media library too.

  • Avatar
    Bharat Nanwani

    Hi Can you please help how do I update caption for already uploaded images in JAVA?

  • Avatar
    Yves Jaques

    Hi Bharat, this is how I update metadata via a java rest service:

    First assuming you have already created a connection to your cloud account:

    private Map config = ObjectUtils.asMap(
            "cloud_name", "xxxxxxxx",
            "api_key", "xxxxxxxxxx",
            "api_secret", "xxxxxxxxxxxxxxxx");
    private Cloudinary cloudinary = new Cloudinary(config);
    private Api api = cloudinary.api();
    

    THEN SIMPLY DO SOMETHING LIKE THIS:

        ArrayList<String> params = new ArrayList<>();
    
        //tags should be comma-separated
        List tags = image.getTags();
        StringBuffer tagStr = new StringBuffer();
        for (int i = 0; i < tags.size(); i++) {
            tagStr.append(tags.get(i));
            if (i != tags.size() - 1) {
                tagStr.append(",");
            }
        }
        params.add("tags");
        params.add(tagStr.toString());
    
        //context should be pipe | separated
        Custom custom = image.getContext().getCustom();
    
        StringBuffer contextStr = new StringBuffer();
    
        contextStr.append("title=").append(custom.getTitle())
                .append("|caption=").append(custom.getCaption())
                .append("|location=").append(custom.getLocation())
                .append("|countryCode=").append(custom.getCountryCode())
                .append("|copyright=").append(custom.getCopyright())
                .append("|date=").append(custom.getDate())
                .append("|credit=").append(custom.getCredit())
                .append("|lat=").append(custom.getLat())
                .append("|lng=").append(custom.getLng())
                .append("|keywords=").append(custom.getKeywords())
                .append("|printQuality=").append(custom.getPrintQuality())
                .append("|theme=").append(custom.getTheme());
    
        params.add("context");
        params.add(contextStr.toString());
    
        try {
            return api.update(id, ObjectUtils.asMap(params.toArray()));
        } catch (Exception e) {
            logger.error(e.toString());
            return null;
        }
    }
    
  • Avatar
    Daniel Meusburger

    Dear Cloudinary team,

    I did not find information in your documentation on how to actually access/retrieve meta data which I defined via the Media Library UI (e.g. a text description of a image or alt text). How can I access that information in Android / Java?

  • Avatar
    Raphi Stein

    @Daniel

    Yes, I also had to tinker to figure it out.

    To get the metadata, simply add the property

    context: true

    to your request.

    i.e. in Postman, you would do

    https://api.cloudinary.com/v1_1//resources/image?context=true

  • Avatar
    Maor Gariv

    Raphi is correct :)

    Java code example for future reference -

    api.resources(ObjectUtils.asMap("context", "true"));

    More details on our browsing capabilities -
    http://cloudinary.com/documentation/admin_api#browse_resources

  • Avatar
    paul headington

    We are getting rate limit exceed when attempting to update ~2450 image in lots of 10 at a rate of 500 ms per update. Surely this is reasonable?

    If not please advise how we can achieve please?

  • Avatar
    Nadav Ofir

    Hi paul,
    While the Admin-API is indeed rate limited, the same task can be achieved using the unlimited explicit() api.

  • Avatar
    MitFun

    Hi,

    I'm using .NET integration in Xamarin.Forms with .NET Standard 2.0.

    I use cloudinary.UpdateResource to update context for meta data,

    but it will replace all exist meta data.

    Has any function can I use to add/update/delete a meta data by meta data key/pair?

  • Avatar
    Aditi Madan

    Hi,

    Yes, you are correct. Currently, updateResource replaces the existing context with new ones.

    I have passed this request to our product team.

    You can use our list api to get the current context and then update it by appending existing with the new ones.

     

  • Avatar
    MitFun

    Hi,

    Thank you for replay.

    Other question:

    I use cloudinary.Upload new image and assign exist PublicID to replace image,

    but it will clear all exist meta data...

    Has any function can I use to replace image without touch exist meta data?

  • Avatar
    Aditi Madan

    Hi,

    Upload image uploads a new image, it does not update an existing one.

    If you want to update the image without changing the context, you can use the update api which will update your resource without changing the context unless you specifically specify the context for updating. 

Please sign in to leave a comment.