338 {
339 QuPath.Image im = new QuPath.Image();
340 im.EntryID = id;
341 im.RandomizedName = Guid.NewGuid().ToString();
342 im.ImageName =
b.Filename;
343 im.ServerBuilder = new QuPath.ServerBuilder();
344 im.ServerBuilder.Uri =
"file:/" +
b.ID.Replace(
"\\",
"/");
345 im.ServerBuilder.ProviderClassName = "qupath.lib.images.servers.bioformats.BioFormatsServerBuilder";
346 im.ServerBuilder.Args = new List<string>();
347 im.ServerBuilder.Args.Add("--series");
348 im.ServerBuilder.Args.Add(
id.
ToString());
349 im.ServerBuilder.Metadata = new QuPath.Metadata();
350 im.ServerBuilder.Metadata.Name =
b.Filename;
351 im.ServerBuilder.Metadata.Width =
b.SizeX;
352 im.ServerBuilder.Metadata.Height =
b.SizeY;
353 im.ServerBuilder.Metadata.Magnification =
b.Magnification;
354 im.ServerBuilder.Metadata.IsRGB =
b.isRGB;
355 im.ServerBuilder.Metadata.ChannelType = "DEFAULT";
356 im.ServerBuilder.Metadata.PixelCalibration = new PixelCalibration();
357 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth = new PixelDimension();
358 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth.Value =
b.PhysicalSizeX;
359 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth.Unit = "µm";
360 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight = new PixelDimension();
361 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight.Value =
b.PhysicalSizeY;
362 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight.Unit = "µm";
363 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing = new ZSpacing();
364 if (
b.Resolutions[0].PixelFormat ==
PixelFormat.Format16bppGrayScale ||
b.Resolutions[0].PixelFormat ==
PixelFormat.Format48bppRgb)
365 im.ServerBuilder.Metadata.PixelType = "UINT16";
366 else if(
b.Resolutions[0].PixelFormat ==
PixelFormat.Format8bppIndexed ||
b.Resolutions[0].PixelFormat ==
PixelFormat.Format24bppRgb)
367 im.ServerBuilder.Metadata.PixelType = "UINT8";
368
369 if (
b.PhysicalSizeZ != 0 ||
b.PhysicalSizeZ < 0)
370 {
371 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Value =
b.PhysicalSizeZ;
372 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Unit = "µm";
373 }
374 else
375 {
376 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Value = 1;
377 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Unit = "z-slice";
378 }
379 im.ServerBuilder.Metadata.PixelCalibration.TimeUnit = "SECONDS";
380 im.ServerBuilder.Metadata.PixelCalibration.Timepoints = new List<object>();
382 for (
int i = 0; i <
b.SizeT; i++)
383 {
384 im.ServerBuilder.Metadata.PixelCalibration.Timepoints.Add(0.0);
385 }
386 im.ServerBuilder.Metadata.PreferredTileHeight =
b.SizeX;
387 im.ServerBuilder.Metadata.PreferredTileWidth =
b.SizeY;
388 im.ServerBuilder.Metadata.SizeT =
b.SizeT;
389 im.ServerBuilder.Metadata.SizeZ =
b.SizeZ;
390 im.Metadata = new Dictionary<string, object>();
391 double max = Double.MinValue;
392 foreach (
Bitmap item
in b.Buffers)
393 {
394 foreach (var s in item.Stats)
395 {
396 if(max < s.Max)
397 max = s.Max;
398 }
399 }
400 im.ServerBuilder.Metadata.MaxValue = (int)max;
401 im.ServerBuilder.Metadata.Levels = new List<Level>();
402 int li = 0;
403 foreach (var r
in b.Resolutions)
404 {
405 Level l = new Level();
406 l.Width = r.SizeX;
407 l.Height = r.SizeY;
408 if (
b.Type != BioImage.ImageType.stack)
409 l.Downsample = 1;
410 else if (
b.Type != BioImage.ImageType.pyramidal)
411 l.Downsample =
b.GetLevelDownsample(li);
412 else
413 l.Downsample = 1;
414 im.ServerBuilder.Metadata.Levels.Add(l);
415 li++;
416 }
417 im.ServerBuilder.Metadata.Channels = new List<Channel>();
418 foreach (AForge.Channel c in
b.Channels)
419 {
421 {
422 QuPath.Channel rr = new QuPath.Channel();
423 QuPath.Channel gg = new QuPath.Channel();
424 QuPath.Channel bb = new QuPath.Channel();
425 rr.Name = c.Name;
426 gg.Name = c.Name;
427 bb.Name = c.Name;
428 int alpha = 255;
429 rr.Color = -65536;
430 gg.Color = -16711936;
431 bb.Color = -16776961;
432 im.ServerBuilder.Metadata.Channels.Add(rr);
433 im.ServerBuilder.Metadata.Channels.Add(gg);
434 im.ServerBuilder.Metadata.Channels.Add(bb);
435 }
436 else
437 {
438 QuPath.Channel rr = new QuPath.Channel();
439 rr.Color = (255 << 24) | (c.EmissionColor.R << 16) | (c.EmissionColor.G << 8) | c.EmissionColor.B;
440 im.ServerBuilder.Metadata.Channels.Add(rr);
441 }
442
443 }
444 im.ServerBuilder.BuilderType = "uri";
445 return im;
446 }
AForge.PixelFormat PixelFormat
Definition Bio.cs:58
AForge.Bitmap Bitmap
Definition Bio.cs:53
return b
Definition Bio.cs:7393
override string ToString()
This function returns the filename of the object, and the location of the object in the 3D space.
Definition Bio.cs:11736