n和m是什么?是否大于65500?应该是?
我不知道这样使用factor()是否真的达到了你想要的效果。如果你想把向量重塑成一个正方形的数组,这是不行的。Factor()返回素数因子,与numbytes的平方根相比,这些素数因子可能都非常小。如果你的目标是使图像合理的正方形,这样写/看它更实用,然后考虑像这样:
numbytes = 600;%为例
f = 1:装天花板(numbytes / 2);
f = f (rem (numbytes f) = = 0);
排序(f = [f;numbytes. / f), 1“提升”);%的因素对
:基于“增大化现实”技术= f(1)。/ f (2:);正规化纵横比
[~, idx] = max (ar);找到AR最接近1
imagegeometry = f (:, idx)%这是目标图像的几何形状
如果numbytes的特定值不能很好地进行分解以生成一个宽高比合理接近1的图像(即在文件类型的几何约束下最大化可用面积),那么可以考虑填充向量以使其更有利于分解。
其他文件类型的几何限制可能不同。PNG似乎可以写入1E6px宽的图像。TIF至金宝app少支持500E6px,但如果宽高比合理,那么在此之前您可能会遇到文件大小限制。