Modifying images

When editing an image, you must work with its master version. To modify an image, you must perform the following:

  1. Get the master version.

    Get the master version of the image. When you modify an image, you must not work on its live version.

  2. Get a temp version.

    Check out the master version to get a temp version of the image.

  3. Modify the temp version.

    Set the properties of the temp version to the new values. You can also upload new image data.

  4. Update the master version.

    Check in the temp version to transfer the changes to the master version.

  5. Update the live version.

    Publish the master version to transfer the changes to the live version.

The example below shows you how to modify an image by the ID of its master version. For more information about working with the ID of the live version, see Editing content in Content lifecycle.

Modifying an image by the ID of its master version

The following code modifies an image by the ID of its master version.

Native API

private void ModifyImageNativeAPI(Guid masterImageId, string newTitle, Stream imageStream, string imageExtension)
{
    LibrariesManager librariesManager = LibrariesManager.GetManager();
 
    //Get the master version.
    Image master = librariesManager.GetImages().Where(i => i.Id == masterImageId).FirstOrDefault();
 
    if (master != null)
    {
        //Check out the master to get a temp version.
        Image temp = librariesManager.Lifecycle.CheckOut(master) as Image;
 
        //Make the modifications to the temp version.
        temp.Title = newTitle;
        temp.LastModified = DateTime.UtcNow;
        temp.Urls.Clear();
        temp.UrlName = Regex.Replace(newTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
        librariesManager.Upload(temp, imageStream, imageExtension);
 
        //Checkin the temp and get the updated master version.
        //After the check in the temp version is deleted.
        master = librariesManager.Lifecycle.CheckIn(temp) as Image;
 
        librariesManager.SaveChanges();
 
        //Publish the image.
        var bag = new Dictionary<string, string>();
        bag.Add("ContentType", typeof(Image).FullName);
        WorkflowManager.MessageWorkflow(masterImageId, typeof(Image), null, "Publish", false, bag);
    }
}

First, you get an instance of the LibrariesManager class. Then, you get the master version with the corresponding ID. Then, to get a temp version of the image, you call Lifecycle.CheckOut with the master version as an argument. You make all the modifications to the temp version. In this example you update the title of the image and its URL, and upload new image data. Then, to transfer the changes to the master version, you call Lifecycle.CheckIn with the temp version as an argument. By default, when calling the CheckIn method, the temp version gets deleted. To persist the changes, you call SaveChanges. Finally, to publish the master version, you call the MessageWorkflowmethod of the WorkflowManager class and pass the required parameters.

Fluent API

private void ModifyImageFluentAPI(Guid masterImageId, string newTitle, Stream imageStream, string imageExtension)
{
    var count = 0;
 
    App.WorkWith().Images().Where(i => i.Id == masterImageId).Count(out count);
 
    if (count > 0)
    {
        App.WorkWith().Image(masterImageId).CheckOut().Do(image =>
        {
            image.Title = newTitle;
            image.LastModified = DateTime.UtcNow;
            image.Urls.Clear();
            image.UrlName = Regex.Replace(newTitle.ToLower(), @"[^\w\-\!\$\'\(\)\=\@\d_]+", "-");
        }).UploadContent(imageStream, imageExtension).CheckIn().SaveChanges();
 
        //Publish the album post.
        var bag = new Dictionary<string, string>();
        bag.Add("ContentType", typeof(Image).FullName);
        WorkflowManager.MessageWorkflow(masterImageId, typeof(Image), null, "Publish", false, bag);
 
    }
}

First, you check whether an image with the specified ID exists. Then, you get the singular image facade of the master version with the specified ID. Then, to get the facade for the temp version, you call the CheckOut method. You make all the modifications in the Do method of the temp facade. In this example you update the title of the image and its URL, and upload new image data. To upload new image data, you call the UploadContent and pass the data as an argument. Then, to transfer the changes to the master version of the item, you callCheckIn. To save the changes, you call SaveChanges. Finally, to publish the image, you call the MessageWorkflow method of theWorkflowManager class and pass the required parameters.

See Also

Next steps

+1-888-365-2779
sales@sitefinity.com

Related topics:

Feedback

How useful is this article?

Tell us more

Submit
Your message was successfully sent.

We appreciate your feedback.

Your message could not be sent.

OK