2016-03-30 10 views
0

AbstractImageServletを拡張してカスタムサーブレットを作成し、これをカスタムセレクタに登録し、createLayerメソッドをオーバーライドしました。画像または画像の元の表現から層を得た後のいずれかの層を返すことは、画像の原画像と高さを返さないAbstractImageServletを使用してDAMにアップロードされたイメージの元のレンディションを取得する方法は?

Image img=new Image(imageContext.resource); 
Layer layer=img.getLayer(true, true, true); 
return layer; 

又は

IMAGEPATHでのパスである
Resource imgResource = imageContext.request.getResourceResolver() 
       .getResource(imagePath); 
     Layer layer=imgResource.getLayer(true, true, true); 
     return layer; 

画像の元の表現は

DAMにおける画像の元の表現のサイズは2048×1100および220キロバイト

しかし番目の大きさであります元のレンディションからレイヤーを取得した後にサーブレットによって返されたイメージは1280 * 687および292 KB

com.day.cq.wcm.foundation.ImageクラスのgetLayerメソッドは元のレンディションの正確に同じサイズを返しません。

AbstractImageServletを拡張した元のイメージの自然なサイズをカスタムサーブレットにするにはどうすればよいですか?

答えて

0

オリジナルの演出のための層を得るための別のオプションもあります - あなたがイメージリソースを持っているときに、次のことを行うことができますが:

+0

これを試しました。元の演奏とまったく同じ大きさとサイズが得られない。 – user2776643

+0

@ user2776643レイヤの作成とデバッグ後に次の行にブレークポイントを設定できますか?レイヤのどのサイズですか?要求処理の次のステップでは、サーブレットがイメージを圧縮することができます。 –

+0

高さと幅は元のレンディションと同じです。 KB単位の画像サイズは同じではありません。サイズは、オーディナリ・レンディションのサイズを超えています。なぜそれが同じではない、どのように元の演奏のサイズと同じにすることができますか? – user2776643

1

アップロードされた画像は、より幅の多くを持っていたときに私たちは、このような状況に直面するだろう1280ピクセル。 AbstractImageServlet.ImageContextには、最大幅1280ピクセルのレイヤーがあります。幅2048ピクセルの画像をアップロードすると、画像のサイズが変更されます。 幅が1280ピクセル未満の画像を試すと、画像のサイズが変更されません。

ただし、システム構成と1つのDAM資産ワークフローステップで1つのサービスを更新する必要があります。

構成:デイCQ DAMバッファのイメージキャッシュ プロパティ:最大外形寸法 "2048×2048"

ワークフロー手順:DAMアップデート資産:プロセスサムネイル: ウェブ有効画像:2048とheight- 2048

Width-詳細は下記のリンク

に見てください。

https://helpx.adobe.com/experience-manager/kb/remove-web-rendition-dimension-limit.html

https://helpx.adobe.com/experience-manager/kb/cqbufferedimagecache-consumes-heap-during-asset-uploads.html

関連する問題