天下无难事 2022-05-29 18:47 采纳率: 25%
浏览 535
已结题

需要一个做出镂空图片的程序

这相当于把一张图片A与一个全黑B(或全白W)图叠加在一起,形成图C。但叠加的方式如下:
设C图有2560x1080个像素,C轮番=A或B。

像素关系是这样的:
在第一行里,图C第一个像素等于图A的对应位置像素后,下一个相邻的对应像素就与B对应位置的像素相等,C图像素就这样交替与A和B对应像素相等,一直到行末。

换行后,第一个C像素与对应位置的B像素相等,然后下一个像素与A图对应位置像素相等,就这样交替,直到行末。

就这样,每行的第一个像素交替与A,B图相应位置的像素相同,直到最后一行。

第一行
c₁₁=a₁₁,c₁₂=b₁₂,c₁₃=a₁₃,c₁₄=b₁₄…… c₁ ₂₅₆₀=b₁ ₂₅₆₀


第1080行
c₁₀₈₀ ₁=b₁₀₈₀ ₁,c₁₀₈₀ ₂=a₁₀₈₀ ₂,… c₁₀₈₀ ₂₅₆₀=a₁₀₈₀ ₂₅₆₀

最后,
print C.

能请哪位编一个么?

  • 写回答

9条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-05-29 19:45
    关注

    是这种效果吗?

    img


    代码:

    from PIL import Image
     
    im_a = Image.open(r'A.png')
    im_b = Image.open(r'B.png')
    pix_a = im_a.load()
    pix_b = im_b.load()
    width_a=im_a.size[0]
    width_b=im_b.size[0]
    height_a=im_a.size[1]
    height_b=im_b.size[1]
    width_c=min(width_a,width_b)
    height_c=min(height_a,height_b)
    result_image = Image.new('RGB', (width_c,height_c), (0,0,0))
    for y in range(height_c):
        for x in range(width_c):
            if (x%2==0 and y%2==0) or (x%2==1 and y%2==1):
                temp = im_a
            else:
                temp = im_b
            r,g,b = temp.getpixel((x,y))
            result_image.putpixel((x,y),(r,g,b))
    result_image.save(r'C.png')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月29日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示