Hallo Leute,
ich habe folgendes Problem. Ich will mir ein Skript bauen das automatisch eine Medien Datei vom Typ PICTURE kopiert.
Nun hab ich allerdings das Problem, dass ich sobald ich das Picture Element des neuen Media Objekts setzen will (newPicture.setPicture(...)
) ein Exception geworfen wird. Exception ist unterhalb des Quellcodes.
Kann mir einer sagen wo mein Fehler liegt oder mach ich da was Grundsätzliches falsch?
Quellcode:
Listable<Media> mediaList = folder.getChildren(Media.class,false);
Iterator<Media> mediaListIterator = mediaList.iterator();
while (mediaListIterator.hasNext())
{
// Bild das überprüft werden soll
MediaImpl mediaPROD = (MediaImpl)mediaListIterator.next();
// Eindeutige ID des Bildes
String uid = mediaPROD.getUid();
// Anhand der ID das Bild im neuen Projekt suchen.
Media media = (Media)b2cMediaStore.getStoreElement(uid, UidType.MEDIASTORE_LEAF);
// Datei noch nicht vorhanden?
if (media == null && mediaPROD.getType() == Media.PICTURE)
{
// Gleichen Ordner im neuen Projekt suchen
MediaFolder b2cRootMediaFolder =
(MediaFolder)b2cMediaStore.getStoreElement(folder.getName(),
UidType.MEDIASTORE_FOLDER);
// Bild aus der Mediendatei laden
Picture picturePROD = mediaPROD.getPicture(language);
// Auflösung ermitteln
Iterator<StoreElement> iterator = picturePROD.getChildren().iterator();
while (iterator.hasNext())
{
Object next2 = iterator.next();
// Handelt es sich um eine Bild Resolution?
if (PictureResolutionImpl.class.isInstance(next2))
{
PictureResolutionImpl impl = (PictureResolutionImpl)next2;
// Displayname ist der Dateiname ohne Extension.
Map<Language,String> lang2DisplayName = new HashMap<Language, String>();
lang2DisplayName.put(language, mediaPROD.getDisplayName(language));
// Media Objekt erstellen.
Media newMedia = b2cRootMediaFolder.createMedia(uid,
mediaPROD.getFilename(),
Media.PICTURE,
false,
lang2DisplayName,
false);
Picture newPicture = newMedia.getPicture(language);
newMedia.setLock(true);
Resolution resolution = impl.getResolution();
InputStream inputStream = picturePROD.getInputStream(resolution);
newPicture.setPicture(resolution, impl.getSize(),
inputStream,
impl.getExtension());
newMedia.save();
newMedia.setLock(false);
}
}
}
}
Exception:
Exception in thread "main" de.espirit.common.io.IoError: java.lang.RuntimeException: - Unable to render RenderedOp for this operation.
at de.espirit.common.imaging.DefaultImageIO.loadImageFromByteArray(DefaultImageIO.java:58)
at de.espirit.common.imaging.j2se14.J2SE14ImageIO.loadImageFromByteArray(J2SE14ImageIO.java:52)
at de.espirit.common.imaging.ImageUtil.loadImageFromByteArray(ImageUtil.java:75)
at de.espirit.firstspirit.server.mediamanagement.MediaManagerImpl$1.call(MediaManagerImpl.java:209)
at de.espirit.firstspirit.server.mediamanagement.MediaManagerImpl$1.call(MediaManagerImpl.java:208)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)
Caused by: java.lang.RuntimeException: - Unable to render RenderedOp for this operation.
at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:813)
at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:853)
at javax.media.jai.RenderedOp.getColorModel(RenderedOp.java:2198)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2368)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2413)
at de.espirit.common.imaging.DefaultImageIO.loadImageFromByteArray(DefaultImageIO.java:48)
at de.espirit.common.imaging.j2se14.J2SE14ImageIO.loadImageFromByteArray(J2SE14ImageIO.java:52)
at de.espirit.common.imaging.ImageUtil.loadImageFromByteArray(ImageUtil.java:75)
at de.espirit.firstspirit.server.mediamanagement.MediaManagerImpl$1.call(MediaManagerImpl.java:209)
at de.espirit.firstspirit.server.mediamanagement.MediaManagerImpl$1.call(MediaManagerImpl.java:208)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:372)
at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)
at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:52)
at de.espirit.firstspirit.server.$Proxy21.uploadPicture(Unknown Source)
at de.espirit.firstspirit.store.access.mediastore.PictureImpl.uploadPicture(PictureImpl.java:312)
at de.espirit.firstspirit.store.access.mediastore.PictureImpl.setPicture(PictureImpl.java:186)
at net.o4b.test.CheckRecipeMedia.checkMediaNames(CheckRecipeMedia.java:247)