作业一:编程设计电影海报的色彩

作业一:设计电影海报的色彩可视化作品。模仿课程PPT第四章第43页上的1914年以来电影海报的颜色做进行可视化的作品,设计实现中国从2008年到2018年这十年间的国产电影海报的颜色可视化作品。具体要求如下:

  1. 采用Python语言编写从互联网上去获取自2008年-2018年中国国产电影的宣传海报图片的爬虫程序,并按年度分类存储;
  2. 针对这些图片,获取每幅图片上的每个像素的色彩值;
  3. 统计每幅海报图片中出现的像素颜色值数据;
  4. 纵坐标方向自上往下表示从2008年到2018年,横坐标表示当年电影海报中所包含的色彩(简单地以7色光为统计单位)
  5. 按自左至右红橙黄绿青蓝紫的顺序
  6. 对该作品进行一下感知和认知层面上的分析和解读
  7. 按本章课程PPT第四页的一般性流程,描述作品完成的过程及撰写体会

一、使用Python爬取1905网站的数据

此代码使用了zhaoolee写的爬取豆瓣TOP250的代码《进击的虫师》爬取豆瓣电影海报(Top250)

我在此基础上做了一些修改来实现老师的需求
import os
import requests
from lxml import etree
import re # 负责下载电影海报
def download_img(title, img_addr, headers, time):# 如果不存在图片文件夹,则自动创建if os.path.exists("./Top250_movie_images/"):passelse:os.makedirs("./Top250_movie_images/")if os.path.exists("./Top250_movie_images/" + time + "/"):passelse:os.makedirs("./Top250_movie_images/" + time + "/")# 获取图片二进制数据image_data = requests.get(img_addr, headers=headers).content# 设置海报存存储的路径和名称image_path = "./Top250_movie_images/" + time + "/" + title[0] + '.jpg'# 存储海报图片with open(image_path, "wb+") as f:f.write(image_data)# 根据url获取数据,并打印到屏幕上,并保存为文件
def get_movies_data(url, headers):# 获取页面的响应内容db_response = requests.get(url, headers=headers)# 将获得的源码转换为etreedb_reponse_etree = etree.HTML(db_response.content)# 提取所有电影数据db_movie_items = db_reponse_etree.xpath('//*[@class="fl line"]/a')print(len(db_movie_items))# 遍历电影数据列表,for db_movie_item in db_movie_items:# 这里用到了xpath的知识db_title = db_movie_item.xpath('img/@alt')print(db_title)db_date = db_movie_item.xpath('img/@data-original')db_img_addr = db_movie_item.xpath('img/@src')word = 'uploadfile' index = [m.start() + 11 for m in re.finditer(word, str(db_date[0]))]print(index)db_movie_date = db_date[0][index[0]:index[0]+4]print("标题:", db_title[0]+" 时间:", db_movie_date + " URL:", db_date[0])# a表示追加模式, b表示以二进制方式写入, + 表示如果文件不存在则自动创建with open("./douban_movie_top250.txt", "ab+") as f:tmp_data = "标题:"+str(db_title)+ "-" + str(db_movie_date) + "\n"f.write(tmp_data.encode("utf-8"))db_img_addr = str(db_img_addr[0].replace("\'", ""))download_img(db_title, db_img_addr, headers, str(db_movie_date))def main():# 使用列表生成式,生成待爬取的页面url的列表urls = []for i in range(5, 107):urls.append("http://www.1905.com/mdb/film/list/country-China/o0d0p"+str(i)+".html")# urls = ["[图片]http://www.1905.com/mdb/film/list/country-China/o0d0p"+str(i*1) for i in range(5,108)+".html"]# 设置请求头headers = {# 设置用户代理头"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",}# 为避免重复运行程序,造成内容重复,这里把上次的文件清除(可跳过)if os.path.isfile("./douban_movie_top250.txt"):os.remove("./douban_movie_top250.txt")# 从列表取出url进行爬取for url in urls:get_movies_data(url, headers)if __name__ == '__main__':main()

二、针对这些图片,获取每幅图片上的每个像素的色彩值

  1. 使用list_all_files(’./Top250_movie_images’)遍历生成的海报
  2. 导入from PIL import Image并使用toRGB(name)对于每一张海报都生成对应的色彩值
  3. 使用data_write_csv(file_name, datas)或text_save(filename, data)生成对应的文件
from PIL import Image
import numpy
import csv
import codecs
import os
import redef data_write_csv(file_name, datas):  # file_name为写入CSV文件的路径,datas为要写入数据列表file_csv = codecs.open(file_name, 'w+', 'utf-8')  # 追加writer = csv.writer(file_csv, delimiter=' ',quotechar=' ', quoting=csv.QUOTE_MINIMAL)for data in datas:writer.writerow(data)print("保存文件成功,处理结束")def text_save(filename, data):  # filename为写入CSV文件的路径,data为要写入数据列表.file = open(filename, 'a')for i in range(len(data)):s = str(data[i]).replace('[', '').replace(']', '')  # 去除[],这两行按数据不同,可以选择s = s.replace("'", '').replace(',', '') + '\n'  # 去除单引号,逗号,每行末尾追加换行符file.write(s)file.close()print("保存文件成功")def list_all_files(rootdir):import os_files = []list = os.listdir(rootdir)  # 列出文件夹下所有的目录与文件for i in range(0, len(list)):path = os.path.join(rootdir, list[i])if os.path.isdir(path):_files.extend(list_all_files(path))if os.path.isfile(path):_files.append(path)print(path)name = path[22:]toRGB(name)# print(name)return _filesdef toRGB(name):time = name[:4]title = name[5:-4]print(title + " " + time)img = Image.open("C:\\Users\\Ifand\\Top250_movie_images\\" + name)img_array = img.load()width, height = img.sizeall_pixels = []for x in range(width):for y in range(height):cpixel = img_array[x, y]all_pixels.append(cpixel)# print(img_array[6, 4])print(len(all_pixels))# 如果不存在文件夹,则自动创建if os.path.exists("./Top250_movie_images/RGBFiles"):passelse:os.makedirs("./Top250_movie_images/RGBFiles")if os.path.exists("./Top250_movie_images/RGBFiles/" + time + "/"):passelse:os.makedirs("./Top250_movie_images/RGBFiles/" + time + "/")# data_write_csv("./Top250_movie_images/RGBFiles/" + time + "/" + title + ".csv", all_pixels)text_save("./Top250_movie_images/RGBFiles/" + time + "/" + title + ".txt", all_pixels)def main():_fs = list_all_files('./Top250_movie_images')print(len(_fs))if __name__ == '__main__':main()


未完待续
作业地址(GitHub)

作业一:编程设计电影海报的色彩相关推荐

  1. 编程设计电影海报的色彩/统计电影海报颜色/电影海报数据可视化

    作业一:设计电影海报的色彩可视化作品.模仿课程PPT第四章第43页上的1914年以来电影海报的颜色做进行可视化的作品,设计实现中国从2008年到2018年这十年间的国产电影海报的颜色可视化作品.具体要 ...

  2. 【HTML作业】HTML设计--电影网站,影视网站

    1.引言 你是否有过相关设计结课作业,课程设计无处下手,网页要求的总数量太多?没有合适的模板?数据库,java,python,vue,html作业复杂工程量过大?毕设毫无头绪等等一系列问题.你想要解决 ...

  3. html期末作业代码网页设计——电影请以你的名字呼唤我(4页) 大学生简单个人静态HTML网页设计作品 DIY布局个人介绍网页模板代码

    HTML5期末大作业 文章目录 HTML5期末大作业 一.作品展示 二.文件目录 三.代码实现 四.完整源码 一.作品展示 二.文件目录 三.代码实现 <!DOCTYPE html PUBLIC ...

  4. c语言编程设计电影俱乐部,C语言课程设计报告—电影俱乐部管理程序(1).pptx...

    学 海 无 涯 ; main() { printf("*******************欢迎使用 DVD 信息管理系统**********************\n"); p ...

  5. 从电影海报看网页设计趋势

    一 复古潮流 google代理商介绍说近几年来,服饰设计以及工业设计几乎都在走复古风潮,典型如legging的崛起,垫肩西装的返潮,哈雷眼镜的热销,以及家电产品简洁风格回暖等等,也带动了其他设计门类的 ...

  6. HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:影视在线网站设计--电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题 ...

  7. HTML5期末大作业:电影票务网站设计——电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:电影票务网站设计--电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设 ...

  8. HTML5期末大作业:在线电影网站设计——电影速递网(12页面)含登录注册HTML+CSS+JavaScript

    HTML5期末大作业:在线电影网站设计--电影速递网(12页面)含登录注册HTML+CSS+JavaScript 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业 ...

  9. HTML5期末大作业:电影网站设计——电影资讯博客(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码

    HTML5期末大作业:电影网站设计--电影资讯博客(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码 常见网页设计作业 ...

最新文章

  1. vivado与modelsim的联合仿真(二)
  2. E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 问题解决方法...
  3. 在Android界面上显示和获取Logcat日志输出
  4. 变,从南到北,从北到南...
  5. antd4中Form.create已废弃
  6. 策略模式在jdk Arrays 中使用
  7. 12.15模拟:总结
  8. 前端学习(2780):创建项目和外观
  9. 8个球放入3个盒子方式_颜值与美味并存~分享几款私房盒子蛋糕做法,再也不用排队买了...
  10. lombok依赖_公司来了个新同事不会用 Lombok,还说我代码有问题
  11. 华为Mate30、iPhone11、小米9 Pro 到底怎么选?
  12. RESTClient 工具
  13. 基于热传导方程的高温作业专用服装设计(二)
  14. python机器学习——文本情感分析(英文文本情感分析)
  15. 真4k测试样片_如何让自己的抖音视频更高清?测试一天后,偷偷告诉你
  16. VIM7.3中文手册
  17. Linux防火墙操作命令,开放或关闭端口
  18. 人民日报评直播问答:百舸争流背后同质化弊病已显现
  19. 消费互联网时代建立了一种互联网经济与实体经济对立的二元经济结构
  20. 迷你世界php源码,我的世界被迷你世界抄袭已实锤,源代码曝光相似程度达90%[多图]...

热门文章

  1. 幸福 平凡---平淡
  2. 产品研发项目进度管理软件工具有哪些推荐?整理10款最佳进度管理软件
  3. RocketMq消息丢失问题解决
  4. 如何恢复被删短信_苹果手机已删除的短信怎么恢复?分享几种简单的恢复方法...
  5. Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复
  6. 基于OpenCV的视频人物查找及剪辑*
  7. Professor Min《论文写作》课程心得体会记录
  8. 进程控制--->进程终止
  9. 3D建模好学吗?工作好找吗?工资怎样?
  10. ThinkPad 开机总提示找到新硬件 PCI Device