From 60db00f400a98b83e063c806e786f72cdaf5de56 Mon Sep 17 00:00:00 2001
From: tpietzsch <tobias.pietzsch@gmail.com>
Date: Wed, 17 Oct 2018 22:21:18 +0200
Subject: [PATCH] ExportHugeImage

---
 src/test/java/bdv/export/ExportHugeImage.java | 105 ++++++++++++++++++
 1 file changed, 105 insertions(+)
 create mode 100644 src/test/java/bdv/export/ExportHugeImage.java

diff --git a/src/test/java/bdv/export/ExportHugeImage.java b/src/test/java/bdv/export/ExportHugeImage.java
new file mode 100644
index 00000000..7777487f
--- /dev/null
+++ b/src/test/java/bdv/export/ExportHugeImage.java
@@ -0,0 +1,105 @@
+package bdv.export;
+
+import bdv.export.WriteSequenceToHdf5.AfterEachPlane;
+import bdv.export.WriteSequenceToHdf5.LoopbackHeuristic;
+import bdv.spimdata.SequenceDescriptionMinimal;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Map;
+import mpicbg.spim.data.generic.sequence.BasicSetupImgLoader;
+import mpicbg.spim.data.generic.sequence.BasicViewSetup;
+import mpicbg.spim.data.generic.sequence.ImgLoaderHint;
+import mpicbg.spim.data.generic.sequence.TypedBasicImgLoader;
+import mpicbg.spim.data.sequence.FinalVoxelDimensions;
+import mpicbg.spim.data.sequence.TimePoint;
+import mpicbg.spim.data.sequence.TimePoints;
+import mpicbg.spim.data.sequence.VoxelDimensions;
+import net.imglib2.RandomAccessibleInterval;
+import net.imglib2.img.array.ArrayImgs;
+import net.imglib2.type.numeric.integer.UnsignedShortType;
+import net.imglib2.util.Intervals;
+import net.imglib2.util.Util;
+import net.imglib2.view.Views;
+
+public class ExportHugeImage
+{
+	private final File hdf5File = new File( "/Users/pietzsch/Desktop/huge.h5" );
+
+	private final RandomAccessibleInterval< UnsignedShortType > input;
+
+	public ExportHugeImage()
+	{
+		input = Views.interval(
+				Views.extendZero( ArrayImgs.unsignedShorts( 1, 1, 1 ) ),
+				Intervals.createMinSize( 0, 0, 0, 10000, 10000, 10000 ) );
+	}
+
+	public static class RAIImgLoader< T > implements TypedBasicImgLoader< T >
+	{
+		private final BasicSetupImgLoader< T > setupImgLoader;
+
+		public RAIImgLoader( final RandomAccessibleInterval< T > rai )
+		{
+			this( rai, Util.getTypeFromInterval( rai ) );
+		}
+
+		public RAIImgLoader( final RandomAccessibleInterval< T > rai, final T type )
+		{
+			setupImgLoader = new BasicSetupImgLoader< T >()
+			{
+				@Override
+				public RandomAccessibleInterval< T > getImage( final int timepointId, final ImgLoaderHint... hints )
+				{
+					return rai;
+				}
+
+				@Override
+				public T getImageType()
+				{
+					return type;
+				}
+			};
+		}
+
+		@Override
+		public BasicSetupImgLoader< T > getSetupImgLoader( final int setupId )
+		{
+			return setupImgLoader;
+		}
+	}
+
+	private static VoxelDimensions defaultVoxelDimensions( int numDimensions )
+	{
+		double[] dimensions = new double[ numDimensions ];
+		Arrays.fill( dimensions, 1.0 );
+		return new FinalVoxelDimensions( "px", dimensions );
+	}
+
+	public void run()
+	{
+		final String name = "img";
+		final RandomAccessibleInterval< UnsignedShortType > rai = input;
+
+		final VoxelDimensions voxelSize = defaultVoxelDimensions( rai.numDimensions() );
+		final BasicViewSetup setup = new BasicViewSetup( 0, name, rai, voxelSize );
+		final Map< Integer, BasicViewSetup > setups = Collections.singletonMap( setup.getId(), setup );
+		final TimePoints timepoints = new TimePoints( Collections.singletonList( new TimePoint( 0 ) ) );
+		final RAIImgLoader< UnsignedShortType > imgLoader = new RAIImgLoader<>( rai );
+		final SequenceDescriptionMinimal seq = new SequenceDescriptionMinimal( timepoints, setups, imgLoader, null );
+
+		final Map< Integer, ExportMipmapInfo > perSetupExportMipmapInfo = Collections.singletonMap( setup.getId(), ProposeMipmaps.proposeMipmaps( setup ) );
+		final boolean deflate = false;
+		final int numCellCreatorThreads = 10;
+		final ProgressWriterConsole progressWriter = new ProgressWriterConsole();
+		final LoopbackHeuristic loopbackHeuristic = null;
+		final AfterEachPlane afterEachPlane = null;
+
+		WriteSequenceToHdf5.writeHdf5File( seq, perSetupExportMipmapInfo, deflate, hdf5File, loopbackHeuristic, afterEachPlane, numCellCreatorThreads, progressWriter );
+	}
+
+	public static void main( String[] args )
+	{
+		new ExportHugeImage().run();
+	}
+}
-- 
GitLab