Set image field programatically

Public

Using an image field with entity metadata wrapper is a little bit more tricky than the usual text fields.

Anyway, it is pretty simple.

The main difference is to upload the image prior to adding it to the field.

Get raw version
php
  1. // First we have to upload the image to the public directory.
  2. $file_path = file_save_data(file_get_contents('/my_local_path/img1.jpg'), 'public://remote_name.jpg');
  3.  
  4. // The wrapper can be created from a existing node or a new one. Once the wrapper is created, the usage is the same.
  5. // For example, for updating the existing node 55.
  6. $wrapper = entity_metadata_wrapper('node', 55);
  7.  
  8. // We are updating an image field called field_banner_button_image.
  9. $wrapper->field_banner_button_image->file->set($file_path);
  10.  
  11. // And save the node
  12. $wrapper->save();