天下无难事 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 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染