imagej+java+示例_Java ImgMode类代码示例

import io.scif.config.SCIFIOConfig.ImgMode; //导入依赖的package包/类

@Override

public > ImgFactory createFactory(

final Metadata m, final ImgMode[] imgModes, final T type)

throws IncompatibleTypeException

{

ImgFactory tmpFactory = null;

// Max size of a plane of a PlanarImg, or total dataset for ArrayImg.

// 2GB.

final long maxSize = ArrayUtils.safeMultiply64(2, 1024, 1024, 1024);

final long availableMem =

(long) (MemoryTools.totalAvailableMemory() * MEMORY_THRESHOLD);

long datasetSize = m.getDatasetSize();

// check for overflow

if (datasetSize <= 0) datasetSize = Long.MAX_VALUE;

// divide by 1024 to compare to max_size and avoid overflow

final long planeSize =

m.get(0).getAxisLength(Axes.X) * m.get(0).getAxisLength(Axes.Y) *

FormatTools.getBytesPerPixel(m.get(0).getPixelType());

final boolean fitsInMemory = availableMem > datasetSize;

boolean decided = false;

int modeIndex = 0;

// loop over ImgOptions in preferred order

while (!decided) {

// get the current mode, or AUTO if we've exhausted the list of

// modes

final ImgMode mode =

modeIndex >= imgModes.length ? ImgMode.AUTO : imgModes[modeIndex++];

if (mode.equals(ImgMode.AUTO)) {

if (!fitsInMemory) tmpFactory = new SCIFIOCellImgFactory<>();

else if (datasetSize < maxSize) tmpFactory = new ArrayImgFactory<>();

else tmpFactory = new PlanarImgFactory<>();

// FIXME: no CellImgFactory right now.. isn't guaranteed to

// handle all

// images well (e.g. RGB)

// else if (planeSize < maxSize) tmpFactory = new PlanarImgFactory();

// else tmpFactory = new CellImgFactory();

decided = true;

}

else if (mode.equals(ImgMode.ARRAY) && datasetSize < maxSize &&

fitsInMemory)

{

tmpFactory = new ArrayImgFactory<>();

decided = true;

}

else if (mode.equals(ImgMode.PLANAR) && planeSize < maxSize &&

fitsInMemory)

{

tmpFactory = new PlanarImgFactory<>();

decided = true;

}

else if (mode.equals(ImgMode.CELL)) {

// FIXME: no CellImgFactory right now.. isn't guaranteed to

// handle all

// images well (e.g. RGB)

// if (fitsInMemory) tmpFactory = new CellImgFactory();

// else tmpFactory = new SCIFIOCellImgFactory();

tmpFactory = new SCIFIOCellImgFactory<>();

decided = true;

}

}

return tmpFactory.imgFactory(type);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值