Question

Je l'ai cherché en ligne pendant un certain temps et presque toutes les questions concernant l'image au service à l'aide Restlet sont sur des images statiques. Ce que je veux faire est de servir l'image générée dynamique de Restlet.

J'ai essayé de servir des images statiques à l'aide Restlet, il travaille. De plus, je peux générer avec succès une image dynamique et les stocker dans un dossier local, de sorte que le problème va à la façon de le servir. Si c'est une réponse http, ce que je vais faire est de joindre tous les octets de l'image au corps de la réponse. Cependant, je ne suis pas sûr de savoir comment utiliser Restlet pour le faire? Est-il FileRepresentation?

Débutant dans ce domaine, et toute suggestion sera la bienvenue.

Merci

Était-ce utile?

La solution

FileRepresentation devrait fonctionner si vous écrivez l'image à un fichier. Pour une approche plus efficace, vous pouvez créer votre propre classe de représentation en étendant OutputRepresentation et redéfinissant la méthode write(OutputStream).

Autres conseils

Je suis un peu en retard à la fête, mais voici une classe avec laquelle vous pouvez servir vos images:

package za.co.shopfront.server.api.rest.representations;

import java.io.IOException;
import java.io.OutputStream;

import org.restlet.data.MediaType;
import org.restlet.representation.OutputRepresentation;

public class DynamicFileRepresentation extends OutputRepresentation {

    private byte[] fileData;

    public DynamicFileRepresentation(MediaType mediaType, long expectedSize, byte[] fileData) {
        super(mediaType, expectedSize);
        this.fileData = fileData;
    }

    @Override
    public void write(OutputStream outputStream) throws IOException {
        outputStream.write(fileData);
    }

}

Dans le gestionnaire de Restlet, vous pouvez le retourner comme ceci:

@Get
public Representation getThumbnail() {

    String imageId = getRequest().getResourceRef().getQueryAsForm().getFirstValue("imageId");
    SDTO_ThumbnailData thumbnailData = CurrentSetup.PLATFORM.getImageAPI().getThumbnailDataByUrlAndImageId(getCustomerUrl(), imageId);
    return new DynamicFileRepresentation(
            MediaType.valueOf(thumbnailData.getThumbNailContentType()), 
            thumbnailData.getSize(), 
            thumbnailData.getImageData());
}

Hope this helps! :)

Il y a un moyen de easyer vous pouvez utiliser ByteArrayRepresentation :

@Get
public ByteArrayRepresentation getThumbnail() {
    byte[] image = this.getImage();
    return new ByteArrayRepresentation(image , MediaType.IMAGE_PNG);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top