Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "BMP_HEADER_TEMPLATE = b'BM6\\x00\\x03\\x00\\x00\\x00\\x00\\x006\\x00\\x00\\x00(\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x00\\x00\\x01\\x00\\x18\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n",
- "\n",
- "\n",
- "class Image:\n",
- " def __init__(self, data=None):\n",
- " if data is None:\n",
- " self.data = []\n",
- " for i in range(256):\n",
- " self.data.append([])\n",
- " for j in range(256):\n",
- " self.data[-1].append([])\n",
- " for k in range(3):\n",
- " self.data[-1][-1].append(0)\n",
- " else:\n",
- " self.data = data\n",
- " \n",
- " def readFromFile(self, path):\n",
- " FILE = open(path, mode='rb')\n",
- " bts = FILE.read()\n",
- " \n",
- " cnt = 0\n",
- " for i in range(256):\n",
- " for j in range(256):\n",
- " self.data[i][j][0] = int(bts[54 + i * 256 * 3 + j * 3])\n",
- " self.data[i][j][1] = int(bts[54 + i * 256 * 3 + j * 3 + 1])\n",
- " self.data[i][j][2] = int(bts[54 + i * 256 * 3 + j * 3 + 2])\n",
- " FILE.close()\n",
- " return\n",
- " \n",
- " def writeToFile(self, path):\n",
- " FILE = open(path, mode='wb')\n",
- " FILE.write(BMP_HEADER_TEMPLATE)\n",
- " for i in range(256):\n",
- " for j in range(256):\n",
- " for k in range(3):\n",
- " FILE.write(self.data[i][j][k].to_bytes(1, byteorder=\"little\"))\n",
- " \n",
- " FILE.close()\n",
- " return"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "img = Image()\n",
- "#img.readFromFile(\"./pics/test.bmp\")\n",
- "\n",
- "for i in range(256):\n",
- " for j in range(256):\n",
- " img.data[i][j] = [i, 255, 255]\n",
- "\n",
- "#img.writeToFile(\"./pics/test2.bmp\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Чтобы посмотреть вставить картинку в Markdown, пользуйтесь следующим синтаксисом `![Image1](pics/test2.bmp)` \n",
- "\n",
- "![Image1](pics/test2.bmp)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Напишите свой собственный градиент, и сохраните его в файл `pics/grad.bmp`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# paste your code here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Напишите функцию `grayscale()`, принимающую три параметра - веса компонент R, G и B."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def grayscale(self, r, g, b):\n",
- " # Add your code here\n",
- "\n",
- " return\n",
- "Image.grayscale = grayscale"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Один из простейших режимов наложения картинок - __Add__. Все компоненты складываются, все, что больше 255 - обрезается."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def image_add(self, other):\n",
- " # Add your code here\n",
- " return Image(data)\n",
- "\n",
- "Image.__add__ = image_add"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Другой популярный режим наложения картинок - __Multiply__. (В формуле ниже считается, что _a_ и _b_ - дробное число от 0 до 1)\n",
- "$$\n",
- "F(a,b) = ab\n",
- "$$"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "def image_multiply(self, other):\n",
- "\n",
- " return Image(data)\n",
- "Image.__mul__ = image_multiply"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }
Add Comment
Please, Sign In to add comment