I already posted the question on stackoverflow, but since I am not allowed yet to post a solution, I’ll post it here. I found a quite low level approach, to resizes a image identified by jcrPathToImage to int targetWidth and int targetHeight.

Resize Image

Resource resource = getResourceResolver().getResource(jcrPathToImage); 
Asset asset = resource.adaptTo(Asset.class); 
Layer layer = new Layer(asset.getOriginal().getStream()) layer.resize(targetWidth, targetHeight); 

Create new rendition in JCR

Extract mime type of the original image

Image image = new Image(resource); String mimeType = image.getMimeType(); 

Store the resized Image using its asset representation.

ByteArrayOutputStream bout = null;
ByteArrayInputStream bin = null;
try {
  bout = new ByteArrayOutputStream(2048);
  layer.write(mimeType, 1, bout);
  bin = new ByteArrayInputStream(bout.toByteArray());
  asset.addRendition(resizedImgName, bin, mimeType);
} finally {
  // close streams ...
}

This may be useful to generate thumbnails.