You need to enable JavaScript to run this app. 如何将图片分割为正方形区块?求对应尺寸计算通用公式
优惠活动
大模型
产品
解决方案
定价
更多

如何将图片分割为正方形区块?求对应尺寸计算通用公式

正方形区块尺寸计算通用方案

预设变量

先定义统一参数:

  • 原图宽度:W (单位:像素)
  • 原图高度:H (单位:像素)
  • 待分割总区块数:N

核心逻辑

要保证所有区块为等大正方形,同时总区块数尽量接近要求的N、无多余裁切/尽量少裁切的前提下,通用计算步骤如下:

  1. 先计算原图的宽高比 r = W/H
  2. 设横向划分的区块数为 cols,纵向划分的区块数为 rows,二者需满足 cols ≈ r * rows,且 cols * rows ≈ N
  3. 联立可得近似区块数:
    • 纵向区块数:rows ≈ √(N / r)
    • 横向区块数:cols ≈ √(N * r)
  4. 对cols和rows取整后,单个正方形区块的边长 s 取以下两个值的较小值,保证区块不会超出原图边界:
s = min( floor(W / cols), floor(H / rows) )

示例验证

拿你给出的9000×6000像素、分割为1000个区块的场景验证:

  • 宽高比 r = 9000/6000 = 1.5
  • 纵向区块数近似值 rows ≈ √(1000 / 1.5) ≈ 25.8,取整为26
  • 横向区块数近似值 cols ≈ √(1000 * 1.5) ≈ 38.7,取整为39
  • 校验总区块数:26×39=1014,和要求的1000非常接近,误差在可接受范围
  • 计算边长:min(9000//39, 6000//26) = min(230, 230) = 230px,刚好是正方形

特殊场景说明

  • 若要求总区块数必须严格等于N:可以对原图边缘做少量透明/白边填充,调整W或H到s*cols和s*rows的整数倍即可。
  • 若可以接受少量边缘裁切:边长可直接取max( floor(W / cols), floor(H / rows) ),裁掉超出原图边界的区域即可。

内容的提问来源于stack exchange,提问作者kern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 11:45:01