1

Accept画像操作に最適なmimetypeを選択する方法はありますか?

私はこのようなリソースを持っています。

@GET
@Produces({"image/jpeg", "image/png"})
public Response readResizedImage(
    @Context Request request,
    @Context HttpHeaders httpHeaders,
    @QueryParam("width") final int width,
    @QueryParam("height") final int height) {

    final List<Variant> variants = Variant.mediaTypes(
        new MediaType("image", "jpeg"), new MediaType("image", "png")).build();

    // Why on earth variants is empty?
    if (!variants.isEmpty()) {
        final Variant variant = request.selectVariant(variants);
        LOGGER.log(Level.INFO, "{0}", variant.getMediaType().toString());
    }

    final List<MediaType> acceptableMediaTypes =
        httpHeaders.getAcceptableMediaTypes();
    for (MediaType acceptableMediaType : acceptableMediaTypes) {
        LOGGER.log(Level.INFO, "acceptableMediaType:{0}/{1}",
                   new Object[]{acceptableMediaType.getType(),
                                acceptableMediaType.getSubtype()});
    }

    return null;
}

次のコマンドでこのリソースを試しました。

$ curl -v -H "Accept: */*" \
-H "Accept: image/*;q=0.2" \
-H "Accept: image/jpeg;q=0.5" \
-H "Accept: image/png;q=1.0" \
http://.............

そしてサーバーは印刷します

acceptableMediaType:image/png
acceptableMediaType:*/*
acceptableMediaType:image/jpeg
acceptableMediaType:image/*

質問:

適切な(ワイルドカードではない)mimeタイプを選択するにはどうすればよいですか?

サイズ変更のために画像バイトを操作するための1つが必要です。

4

1 に答える 1

1

これを Jersey に任せるのが最も簡単です。つまり、image/png を生成する方法と image/jpeg を生成する方法の 2 つの方法があります。Jersey は、着信要求の Accept ヘッダーにある個々のメディア タイプの品質パラメーターに応じて、適切なものを呼び出します。

于 2012-09-06T12:00:42.270 に答える