1

特定の JCR イメージ リソースのサイズを変更し、新しいレンディションとして保存しようとしています。使用例は、「任意の」スケールでサムネイルを生成することです。

を使用したかったのcom.day.cq.dam.core.process.CreateThumbnailProcessですが、これはプロジェクトでは使用できません。作業中です。

4

2 に答える 2

3

jcrPathToImagetoint targetWidthと で識別される画像のサイズを変更する、非常に低レベルのアプローチを見つけましたint targetHeight

  1. 画像のサイズ変更

    Resource resource = getResourceResolver().getResource(jcrPathToImage);
    Asset asset = resource.adaptTo(Asset.class);
    Layer layer = new Layer(asset.getOriginal().getStream())
    layer.resize(targetWidth, targetHeight);
    
  2. JCR で新しいレンディションを作成する

    元の画像の MIME タイプを抽出する

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

    アセット表現を使用して、サイズ変更された Image を保存します。

    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 ...               
    }
    
于 2013-02-07T10:46:28.850 に答える
1

DAM Update Asset ワークフローを構成して、作成したいレンディションを提供できます。

http://localhost:4502/etc/workflow/models/dam/update_asset.html

このワークフロー モデルでサムネイル作成ステップを選択し、そのステップの [プロセス] タブでカスタム サムネイル値を追加できます。

[140:100]、[48:48]、[319:319]、[90,90]

于 2013-02-21T06:06:58.927 に答える