Image Serving supporta la nidificazione illimitata delle richieste di Image Server, l’incorporazione di richieste di Image Rendering e l’incorporazione di immagini recuperate da server stranieri. Solo le immagini di livello e le maschere di livello supportano questi meccanismi.
Alcuni client e-mail e server proxy possono codificare le parentesi graffe utilizzate per la sintassi di nidificazione e incorporamento. Le applicazioni per le quali si tratta di un problema devono utilizzare parentesi al posto delle parentesi graffe.
Un'intera richiesta di Image Server può essere utilizzata come origine di livello specificandola nel comando src=
(o mask=
) utilizzando la seguente sintassi:
…&src=is( nestedRequest)&…
Il token is
fa distinzione tra maiuscole e minuscole.
La richiesta nidificata non deve includere il percorso principale del server (in genere http:// *server*/is/image/'
).
I caratteri di delimitazione della richiesta nidificati ( '(',')'
) e i caratteri di delimitazione dei comandi ( '?'
, '&'
, '='
) nelle richieste nidificate non devono essere codificati tramite HTTP. Di fatto, le richieste nidificate devono essere codificate come la richiesta esterna (nidificazione).
Le regole di preelaborazione vengono applicate alle richieste nidificate.
I seguenti comandi vengono ignorati quando specificati nelle richieste nidificate (nell’URL della richiesta o in catalog::Modifier
o catalog::PostModifier
):
fmt=
qlt=
iccEmbed=
printRes=
quantize=
req=
bgc=
Se l'immagine del risultato delle richieste nidificate include dati di maschera (alfa), viene passata al livello di incorporamento come maschera di livello.
Vengono inoltre ignorati attribute::MaxPix
e attribute::DefaultPix
del catalogo immagini applicato alla richiesta nidificata.
Il risultato immagine di una richiesta IS nidificata può essere memorizzato nella cache facoltativamente includendo cache=on
. Per impostazione predefinita, la memorizzazione in cache dei dati intermedi è disabilitata. La memorizzazione in cache deve essere abilitata solo quando ci si aspetta che l'immagine intermedia venga riutilizzata in una richiesta diversa entro un periodo di tempo ragionevole. Si applica la gestione standard della cache lato server. I dati vengono memorizzati nella cache in un formato senza perdita di dati.
Quando Dynamic Media Image Rendering è abilitato sul server, le richieste di rendering possono essere utilizzate come sorgenti di livello specificandole nel comando src= (o mask=). Utilizza la sintassi seguente:
…&src=ir( *renderRequest*)&…
Il token ir
fa distinzione tra maiuscole e minuscole.
renderRequest è la consueta richiesta di Image Rendering, escluso il percorso principale HTTP http:// *server*/ir/render/
.
I caratteri di delimitazione della richiesta nidificati ( '(',')'
) e i caratteri di delimitazione dei comandi ( '?'
, '&'
, '='
) nelle richieste nidificate non devono essere codificati tramite HTTP. Di fatto, le richieste incorporate devono essere codificate come la richiesta esterna (incorporazione).
I seguenti comandi Image Rendering vengono ignorati quando specificati nelle richieste nidificate:
fmt=
qlt=
icc=
iccEmbed=
printRes=
req=
Vengono inoltre ignorati attribute::MaxPix
e attribute::DefaultPix
del catalogo dei materiali applicabile alla richiesta di rendering nidificata.
Il risultato immagine di una richiesta IR nidificata può essere memorizzato nella cache facoltativamente includendo cache=on
. Per impostazione predefinita, la memorizzazione in cache dei dati intermedi è disabilitata. La memorizzazione in cache deve essere abilitata solo quando ci si aspetta che l'immagine intermedia venga riutilizzata in una richiesta diversa entro un periodo di tempo ragionevole. Si applica la gestione standard della cache lato server. I dati vengono memorizzati nella cache in un formato senza perdita di dati.
Quando il renderer grafico FXG (aka AGMServer) è installato e abilitato con Image Serving, le richieste FXG possono essere utilizzate come sorgenti di livello specificandole nei comandi src=
(o mask=
). Utilizza la sintassi seguente:
…&src=fxg( renderRequest)&…
Il token fxg
fa distinzione tra maiuscole e minuscole.
Il rendering grafico FXG è disponibile solo nell’ambiente ospitato da Dynamic Media e può richiedere licenze aggiuntive. Per ulteriori informazioni, contatta il supporto tecnico Dynamic Media.
renderRequest è la normale richiesta di rendering FXG, escludendo il percorso principale HTTP http:// *server*/agm/render/
.
I caratteri di delimitazione ( '(',')'
) e i caratteri di delimitazione dei comandi ( '?'
, '&'
, '='
) nelle richieste nidificate non devono essere codificati tramite HTTP. Di fatto, le richieste incorporate devono essere codificate come la richiesta esterna (incorporazione).
I seguenti comandi FXG vengono ignorati quando specificati nelle richieste nidificate:
fmt=
qlt=
icc=
iccEmbed=
cache=
Image Server supporta l'accesso alle immagini sorgente su server HTTP esterni.
Per gli URL remoti è supportato solo il protocollo HTTP.
Per specificare un URL esterno per un comando src=
o mask=
, delimita l’URL esterno o il frammento dell’URL con parentesi:
…&src=( foreignUrl)&…
Importante I caratteri di delimitazione ( '(',')'
) e i caratteri di delimitazione dei comandi ( '?'
, '&'
, '='
) nelle richieste nidificate non devono essere codificati in HTTP. Di fatto, le richieste incorporate devono essere codificate come la richiesta esterna (incorporazione).
Sono consentiti gli URL completi assoluti (se è impostato attribute::AllowDirectUrls
) e gli URL relativi a attribute::RootUrl
. Si verifica un errore se un URL assoluto è incorporato e attributo: AllowDirectUrls
è 0 oppure se è specificato un URL relativo e attribute::RootUrl
è vuoto.
Sebbene gli URL stranieri non possano essere specificati direttamente nel componente percorso dell’URL di richiesta, è possibile impostare una regola di preelaborazione per consentire la conversione di percorsi relativi a URL assoluti (vedi l’esempio seguente).
Le immagini esterne vengono memorizzate nella cache dal server in base alle intestazioni di memorizzazione nella cache incluse nella risposta HTTP. Se non è presente né un'intestazione di risposta HTTP ETag
né un'intestazione di risposta HTTP Last-Modified, la risposta non viene memorizzata nella cache. Questo può causare prestazioni scadenti per gli accessi ripetuti per la stessa immagine esterna, in quanto Image Serving deve recuperare e riconvalidare l'immagine a ogni accesso.
Questo meccanismo supporta gli stessi formati di file immagine supportati dall'utility Image Convert (IC), ad eccezione delle immagini sorgente con 16 bit per componente.
Image Serving eseguirà automaticamente l'utilità validate quando viene utilizzata per la prima volta un'immagine esterna, per assicurarsi che l'immagine sia valida e non sia stata danneggiata durante la trasmissione. Ciò può causare un leggero ritardo nel primo accesso. Per ottenere le migliori prestazioni, si consiglia di limitare le dimensioni di tali immagini e/o di utilizzare un formato di file immagine che comprime bene.
Le dimensioni dell’immagine generata dalle richieste nidificate/incorporate vengono normalmente ottimizzate automaticamente. Se è abilitato il caching delle immagini di richiesta nidificate, è possibile ottenere incrementi di prestazioni incrementali specificando la dimensione esatta dell’immagine nidificata, in modo che non sia necessario alcun ulteriore ridimensionamento quando viene riutilizzata la voce di cache.
Il server di immagini importante non supporta la doppia codifica delle richieste nidificate o incorporate. Le richieste nidificate e incorporate devono essere codificate tramite HTTP come le semplici richieste.
Modello a livelli con memorizzazione in cache:
Utilizzare la nidificazione per aggiungere la memorizzazione in cache a un modello di livelli. Un numero limitato di immagini di sfondo viene sovrapposto a testo altamente variabile. La stringa del modello iniziale potrebbe essere simile alla seguente:
layer=0&src=$img$&size=300,300&layer=1&text=$txt$
Con lievi modifiche, possiamo pre-scalare l'immagine del livello 0 e memorizzarla in cache in modo persistente, riducendo così il carico del server:
layer=0&src=is(?src=$img$&size=300,300&cache=on)&layer=1&text=$txt$
Incorporazione di richieste per il rendering delle immagini di Dynamic Media
Utilizzo di un modello memorizzato in myCatalog/myTemplate; genera l’immagine per il livello2 del modello utilizzando Dynamic Media Image Rendering:
http://server/is/image/myCatalog/myTemplate?layer=2&src=ir(myRenderCatalog/myRenderObject?id=myIdValue&sel=group&src=is(myCatalog/myTexture1?res=30)&res=30)&wid=300
Notare le parentesi graffe nidificate. La richiesta Image Rendering incorpora una chiamata a Image Serving per recuperare una texture ripetibile.
src= , mask=, Richiedi preProcessing, Riferimento per il rendering delle immagini, Modelli, Utilità di Image Serving