Is it possible to make a generic method out of this, or at least separate them?
Well, it works well, but as you said, it can be optimized

Review:

You are commenting each line which is not good, only comment meaningful code sections. Commonly the names of the functions and variables you are calling is intuitive enough to know how the code is working. When it is insufficient then it is the moment to comment.

Refactoring:

You may create two class fields (ImageFactory,MemoryStream) and work with these.

private ImageFactory imageFactory;
private MemoryStream imageStream;

public [ClassName]() //the constructor if doubts
{
    imageFactory = ImageFactory(preserveExifData: true);
    imageStream = MemoryStream();
}

public Image Resize(Image image, int width, int height)
{
    imageFactory.Load(image).Resize(new Size(width, height)).Save(imageStream);
    return Image.FromStream(imageStream);
}

public Image Crop(Image image, float left, float top, float right, float bottom,
    bool isModePercentage = true)
{
    var cropMode = isModePercentage ? CropMode.Percentage : CropMode.Pixels;
    var cropLayer = new CropLayer(left, top, right, bottom, cropMode);

    imageFactory.Load(image).Crop(cropLayer).Save(imageStream);

    return Image.FromStream(imageStream);
}


Hope it has been helpful.