Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Исходный файл(1688 × 630 пкс, размер файла: 518 КБ, MIME-тип: image/gif, закольцованный, 61 фрейм, 12 с)

Краткое описание

Описание
Deutsch: Multiplexing einer 7-Segment-Anzeige.
Anzeige von "1.234" in verschiedenen Frequenzen.
Дата
Источник Собственная работа
Автор Laserlicht

Python code

#Path to Cairo Lib
import os
os.environ["PATH"] = r"D:\Programme\msys64\mingw64\bin" + os.pathsep + os.environ["PATH"]

import numpy as np
import drawSvg as draw

############################

#load and ransform segments
#based on Coords from here: https://commons.wikimedia.org/wiki/File:7_Segment_Display_with_Labeled_Segments.svg
seg = [ # X, Y
        [[278.759,242.759,98.759,62.759,98.759,242.759,278.759,242.759], [520.74,556.74,556.74,520.74,484.74,484.74,520.74,556.74]], #A
        [[287.759,323.759,323.759,287.759,251.759,251.759,287.759,323.759], [295.928,331.928,475.928,511.928,475.928,331.928,295.928,331.928]], #B
        [[287.759,323.759,323.759,287.759,251.759,251.759,287.759,323.759], [64.427,100.427,244.427,280.427,244.427,100.427,64.427,100.427]], #C
        [[278.759,242.759,98.759,62.759,98.759,242.759,278.759,242.759], [55.26,91.26,91.26,55.26,19.26,19.26,55.26,91.26]], #D
        [[53.758,89.759,89.759,53.758,17.758,17.758,53.758,89.759], [64.427,100.427,244.427,280.427,244.427,100.427,64.427,100.427]], #E
        [[53.758,89.758,89.758,53.758,17.758,17.758,53.758,89.758], [295.928,331.928,475.928,511.928,475.928,331.928,295.928,331.928]], #F
        [[278.759,242.759,98.759,62.759,98.759,242.759,278.759,242.759], [287.927,323.928,323.928,287.927,251.927,251.927,287.927,323.928]] #G
      ]
seg = np.array(seg)
circle = np.array([373.241, 515.74])

offs = np.array([17.758, 19.26])

circle -= offs

offs = np.repeat(offs[:, np.newaxis], 8, axis=1)
offs = np.repeat(offs[np.newaxis, :, :], 7, axis=0)

seg -= offs

scale_f = 537.48
seg /= scale_f
circle /= scale_f
circle = np.absolute(circle + np.array([0, -1]))
circle_r = 41 / scale_f

############################

seg_decoder = {
    "0": [False, True, True, True, True, True, True],
    "1": [False, False, False, False, True, True, False],
    "2": [True, False, True, True, False, True, True],
    "3": [True, False, False, True, True, True, True],
    "4": [True, True, False, False, True, True, False],
    "5": [True, True, False, True, True, False, True],
    "6": [True, True, True, True, True, False, True],
    "7": [False, False, False, False, True, True, True],
    "8": [True, True, True, True, True, True, True],
    "9": [True, True, False, True, True, True, True],
    "A": [True, True, True, False, True, True, True],
    "B": [True, True, True, True, True, False, False],
    "C": [False, True, True, True, False, False, True],
    "D": [True, False, True, True, True, True, False],
    "E": [True, True, True, True, False, False, True],
    "F": [True, True, True, False, False, False, True],
    " ": [False, False, False, False, False, False, False],
    '█': [True, True, True, True, True, True, True]
}

############################

def render(text, point, column_switch, seg_switch_draw):
    d = draw.Drawing(402, 150, origin=(0, 0), displayInline=False)
    d.append(draw.Rectangle(0, 0, 585, 150, fill='#ffffff'))

    for i in range(len(text)):
        char = text[i]

        seg1 = seg * 100

        offs = np.array([90 * i + 4 + 50, 5])
        offs = np.repeat(offs[:, np.newaxis], 8, axis=1)
        offs = np.repeat(offs[np.newaxis, :, :], 7, axis=0)
        seg1 += offs

        color_enabled = 'green'
        color_disabled = '#eeeeee'
        color_wire_disabled = 'gray'
        color_wire_enabled_p = 'red'
        color_wire_enabled_m = 'blue'

        d.append(draw.Rectangle(90 * i + 50, 0, 82, 110-0.25, fill='#cccccc', stroke='black', stroke_width=0.5))
        d.append(draw.Lines(*np.ravel(seg1[0],'F'), close=False, fill=color_enabled if seg_decoder[char][6] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[1],'F'), close=False, fill=color_enabled if seg_decoder[char][5] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[2],'F'), close=False, fill=color_enabled if seg_decoder[char][4] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[3],'F'), close=False, fill=color_enabled if seg_decoder[char][3] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[4],'F'), close=False, fill=color_enabled if seg_decoder[char][2] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[5],'F'), close=False, fill=color_enabled if seg_decoder[char][1] else color_disabled, stroke='black'))
        d.append(draw.Lines(*np.ravel(seg1[6],'F'), close=False, fill=color_enabled if seg_decoder[char][0] else color_disabled, stroke='black'))
        d.append(draw.Circle(*(circle * 100 + np.array([90 * i + 4 + 50, 5])), circle_r * 100, fill=color_enabled if point[i] else color_disabled, stroke_width=1, stroke='black'))

        d.append(draw.Text(str(i + 1), 9, 90 * i + 50 + 41 - 2, 143, fill='magenta'))
        d.append(draw.Line(90 * i + 50 + 41, 110, 90 * i + 50 + 41, 120, stroke=color_wire_enabled_m if column_switch[i] else color_wire_disabled, stroke_width=2, fill='none'))
        d.append(draw.Line(90 * i + 50 + 41, 130, 90 * i + 50 + 41, 140, stroke=color_wire_enabled_m, stroke_width=2, fill='none'))
        a = 2 if not column_switch[i] else 0
        d.append(draw.Line(90 * i + 50 + 41 - 2 - a, 118, 90 * i + 50 + 41 - 2 - a, 132, stroke=color_wire_enabled_m if column_switch[i] else color_wire_disabled, stroke_width=2, fill='none'))

        for j in range(8):
            en = (seg_decoder[text[seg_switch_draw]] + [point[seg_switch_draw]])[j]
            d.append(draw.Line(90 * i + 50, 110 / 9 * (j + 1), 90 * i + 50 - 8, 110 / 9 * (j + 1), stroke=color_wire_enabled_p if en else color_wire_disabled, stroke_width=2, fill='none'))

            if i==seg_switch_draw:
                d.append(draw.Text(["DP", "A", "B", "C", "D", "E", "F", "G"][::-1][j], 9, 7, 110 / 9 * (j + 1) - 3, fill='magenta'))
                d.append(draw.Line(50 - 20, 110 / 9 * (j + 1), 50 - 10 - 20, 110 / 9 * (j + 1), stroke='red', stroke_width=2, fill='none'))
                b = 2 if not en else 0
                d.append(draw.Line(50 - 6, 110 / 9 * (j + 1) + 2 + b, 50 - 10 - 12, 110 / 9 * (j + 1) + 2 + b, stroke='red', stroke_width=2, fill='none'))
                
    d.setPixelScale(4.2)  # Set number of pixels per geometry unit
    #d.setRenderSize(400,200)  # Alternative to setPixelScale
    #d.saveSvg('example.svg')
    #d.savePng('example.png')

    #d.rasterize()  # Display as PNG
    #d  # Display as SVG
    return d

############################

from apng import APNG
import os, numpy, PIL
from PIL import Image

files = []
f = 0

text = "1234"
pointpos = 0

for j in range(6):
  delay = 1000/2**j

  for _ in range(j):
    for i in range(len(text)):
      fn = "R:/Temp/" + str(f).zfill(5) + ".png"

      seg_switch_draw = i
      column_switch = [i==x for x in range(len(text))]
      point = [i==pointpos==x for x in range(len(text))]
      text_masked = "".join([x if i==index else " " for index, x in enumerate(text)])

      render(text_masked, point, column_switch, seg_switch_draw).savePng(fn)
      
       #remove colors
      arr = numpy.array(Image.open(fn),dtype=numpy.float)
      arr = numpy.array(numpy.round(arr),dtype=numpy.uint8)
      arr = numpy.bitwise_and(arr >> 4, 0x0f)
      arr = numpy.bitwise_and(arr << 4, 0xff)
      out = Image.fromarray(arr,mode="RGB")
      out.save(fn)

      files.append((fn, delay))

      f += 1

#mean
file, delay = files[0]
w,h = Image.open(file).size
N = len(text)
arr = numpy.zeros((h,w,3),numpy.float)
for i in range(len(text)):
  file, delay = files[-i]
  imarr = numpy.array(Image.open(file),dtype=numpy.float)
  arr = arr+imarr/N
arr = numpy.array(numpy.round(arr),dtype=numpy.uint8)

arr = numpy.bitwise_and(arr >> 4, 0x0f) #remove colors
arr = numpy.bitwise_and(arr << 4, 0xff)

out = Image.fromarray(arr,mode="RGB")
out.save(r"R:\Temp\avg.png")
files.append((r"R:\Temp\avg.png", 5000))

im = APNG()
for file, delay in files:
  im.append_file(file, delay=int(delay))
im.save(r"R:\Temp\result.png")

from IPython.display import Image
Image(filename=r"R:\Temp\result.png")

#apng2gif result.png result.gif



Лицензирование

Image:

w:ru:Creative Commons
атрибуция распространение на тех же условиях
Этот файл доступен по лицензии Creative Commons Attribution-Share Alike 4.0 International
Атрибуция: Laserlicht
Вы можете свободно:
  • делиться произведением – копировать, распространять и передавать данное произведение
  • создавать производные – переделывать данное произведение
При соблюдении следующих условий:
  • атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
  • распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.

Source:

Этот файл доступен на условиях лицензии Expat License, иногда называемой Лицензией MIT:

Copyright © Laserlicht

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

Данное программное обеспечение предоставляется «как есть», без каких-либо гарантий, явно выраженных или подразумеваемых, включая, но не ограничиваясь гарантиями товарной пригодности, соответствия по его конкретному назначению и отсутствия нарушений прав. Ни в каком случае авторы или правообладатели не несут ответственности по искам о возмещении ущерба, убытков или других требований по действующим контрактам, деликтам или иному, возникшим из, имеющим причиной или связанным с программным обеспечением или использованием программного обеспечения или иными действиями с программным обеспечением.


Загружающему: Лицензия MIT имеет различные версии, возможно вы хотите указать лицензию более точно. Кликните на {{MIT}} для более подробной информации.

Краткие подписи

Добавьте однострочное описание того, что собой представляет этот файл

Элементы, изображённые на этом файле

изображённый объект

У этого свойства есть некоторое значение без элемента в

image/gif

630 пиксель

1688 пиксель

История файла

Нажмите на дату/время, чтобы посмотреть файл, который был загружен в тот момент.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий21:58, 25 февраля 2022Миниатюра для версии от 21:58, 25 февраля 20221688 × 630 (518 КБ)<bdi>Laserlicht</bdi>highest speed not possible in browser...
21:54, 25 февраля 2022Миниатюра для версии от 21:54, 25 февраля 20221688 × 630 (708 КБ)<bdi>Laserlicht</bdi>Thumb->Animation
21:40, 25 февраля 2022Миниатюра для версии от 21:40, 25 февраля 20222010 × 750 (850 КБ)<bdi>Laserlicht</bdi>Uploaded own work with UploadWizard

Следующая страница использует этот файл:

Глобальное использование файла

Данный файл используется в следующих вики:

Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).