JES图像复制:实现用户自定义次数的图像重复打印需求
实现图像重复打印的嵌套循环方案
看起来你已经搭好了项目的基础框架,接下来核心就是通过嵌套循环来批量复制原图像到新画布的不同位置对吧?我来帮你补全这部分逻辑,同时拆解关键步骤:
完整代码实现
def repeat(pic): val = requestIntegerInRange("Enter 1-10", 1, 10) print "The user entered :" + str(val) w = getWidth(pic) h = getHeight(pic) print "Height and Width of this image are:", h, w # 创建能容纳val×val个原图像的空画布 result = makeEmptyPicture(w * val, h * val) # 嵌套循环:外层控制行(Y方向),内层控制列(X方向) for row in range(val): for col in range(val): # 计算当前重复图像块的起始坐标 start_x = col * w start_y = row * h # 遍历原图像的每个像素,复制到结果画布对应位置 for pixel in getPixels(pic): orig_x = getX(pixel) orig_y = getY(pixel) # 计算新像素在结果画布中的绝对坐标 new_x = start_x + orig_x new_y = start_y + orig_y # 复制原像素颜色到新位置 setColor(getPixel(result, new_x, new_y), getColor(pixel)) # 展示最终生成的重复图像 show(result) return result
关键逻辑说明
- 画布尺寸适配:我们创建了宽度为
原图像宽度×重复次数、高度为原图像高度×重复次数的空画布,确保能完整放下所有重复的图像块。 - 嵌套循环的作用:外层
row循环控制每一行图像的起始Y坐标,内层col循环控制每一列图像的起始X坐标,这样就能生成规整的网格状重复效果。 - 像素级复制:最内层循环遍历原图像的每一个像素,将颜色值精准复制到结果画布的对应位置(起始坐标+原像素的相对坐标),保证每个图像块和原图像完全一致。
如果你的需求不是网格排列(比如只需要横向或纵向重复),可以简化循环:
- 仅横向重复:去掉外层
row循环,画布高度保持原高,只通过col循环控制X方向的重复 - 仅纵向重复:去掉内层
col循环,画布宽度保持原宽,只通过row循环控制Y方向的重复
内容的提问来源于stack exchange,提问作者vkp
相关产品推荐
相关产品推荐

