پرونده:CRT image creation animation.gif

Page contents not supported in other languages.
از ویکی‌پدیا، دانشنامهٔ آزاد

CRT_image_creation_animation.gif(۵۴۶ × ۵۳۲ پیکسل، اندازهٔ پرونده: ۶٫۶۱ مگابایت، نوع MIME پرونده: image/gif، چرخش‌دار، ۱۹۲ قاب، ۳٫۸ ثانیه)

خلاصه

توضیح
Deutsch: Animation des Bildaufbaus bei einer Kathodenstrahlröhre mit Interlacing-Verfahren.
English: Animation of the image construction for a cathode ray tube with interlacing method.
تاریخ
منبع اثر شخصی
پدیدآور Laserlicht

Code

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

#Imports
import drawSvg as draw
from PIL import Image
import numpy as np
import webbrowser

#Global Settings
in_img = "img3.jpg"
intensity_multiplicator = 0.990

#Image
im = Image.open(in_img)
pix = np.array(im)
pix = np.transpose(pix, (1, 0, 2))
intensity = np.arange(pix.shape[0] * pix.shape[1], dtype=np.float64).reshape(pix.shape[0], pix.shape[1])
intensity[:] = 0.0

def render(f):
    global im, intensity

    #Settings / Objects
    size = (600, 600)
    d = draw.Drawing(size[0], size[1], origin=(0, 0), displayInline=False)
    d.append(draw.Rectangle(0, 0, size[0], size[1], fill="#ffffff", fill_opacity=1.0))

    #Draw
    draw_area = (50, 50 + 100, (280/3) * 4, 280)
    gap = (draw_area[2] / pix.shape[0], draw_area[3] / pix.shape[1])

    #   Antenna
    gradient = draw.LinearGradient(draw_area[0], draw_area[1], draw_area[0] + draw_area[2], draw_area[1] + draw_area[3])
    gradient.addStop(0, '#aaaaaa', 1)
    gradient.addStop(1, '#eeeeee', 1)
    gradient = '#cccccc' #overwrite gradient -> disable, because better for gif

    p = draw.Path(stroke_width=2, stroke="#000000", fill=gradient, fill_opacity=1.0)
    p.M(280, 460)
    p.A(10, 10, 0, 0, 1, 300, 460)
    d.append(p)
    d.append(draw.Line(290, 470, 290 + 90, 470 + 90, stroke='black', stroke_width=2, fill='none'))
    d.append(draw.Circle(290 + 90, 470 + 90, 7, fill='black', stroke_width=2, stroke='black'))
    d.append(draw.Line(290, 470, 290 - 120, 470 + 120, stroke='black', stroke_width=2, fill='none'))
    d.append(draw.Circle(290 - 120, 470 + 120, 7, fill='black', stroke_width=2, stroke='black'))

    #   Foot
    p = draw.Path(stroke_width=2, stroke="#000000", fill=gradient, fill_opacity=1.0)
    p.M(290+100, 120)
    p.L(290+100+50, 120-50)
    p.L(290+100+20, 120)
    d.append(p)
    p = draw.Path(stroke_width=2, stroke="#000000", fill=gradient, fill_opacity=1.0)
    p.M(290-100, 120)
    p.L(290-100-50, 120-50)
    p.L(290-100-20, 120)
    d.append(p)

    #   TV housing
    d.append(draw.Rectangle(20, 20 + 100, 540, 340, rx=50, ry=50, fill=gradient, fill_opacity=1.0, stroke="#000000", stroke_width=2))

    #   Blackscreen
    d.append(draw.Rectangle(50, 50 + 100, (280/3)*4, 280, rx=10, ry=10, fill="#000000"))

    #   Display
    while f >= pix.shape[0] * pix.shape[1]: f -= pix.shape[0] * pix.shape[1]
    radius = min(gap[0], gap[1]) / 2
    intensity[:] *= intensity_multiplicator
    for x in range(pix.shape[0]):
        for y in range(pix.shape[1]):
            point_pos = (f % pix.shape[0], f // pix.shape[0])

            if point_pos[1] < pix.shape[1] / 2:
                y_pos = (point_pos[1] * 2 == y)
            else:
                y_pos = (((point_pos[1] - pix.shape[1] / 2) * 2) + 1 == y)

            if point_pos[0] == x and y_pos:
                color = "#ffffff"
                intensity[x, y] = 1.0
            else:
                color = tuple((pix[x][y] * intensity[x][y]).astype(int))
                color = '#%02x%02x%02x' % color
           
            d.append(draw.Circle(draw_area[0] + x * gap[0] + radius, draw_area[1] + draw_area[3] - y * gap[1] - radius, radius, fill=color))

    #   TV
    #       Screen (only Border)
    d.append(draw.Rectangle(50 - 5, 50 + 100 - 5, (280/3)*4 + 10, 280 + 10, rx=15, ry=15, fill="#000000", fill_opacity=0.0, stroke=gradient, stroke_width=10)) #hacky overdraw overlapping circles -> masks don't work...
    d.append(draw.Rectangle(50, 50 + 100, (280/3)*4, 280, rx=10, ry=10, fill="#000000", fill_opacity=0.0, stroke="#000000", stroke_width=2))

    #       Controls
    d.append(draw.Rectangle(75 + (280/3)*4, 130 + 100, 455 - (280/3)*4, 200, rx=10, ry=10, fill="#000000", fill_opacity=0.0, stroke="#000000", stroke_width=2))

    d.append(draw.Circle(75 + (280/3)*4 + 40, 130 + 100 + 160, 25, fill='#888888', stroke_width=2, stroke='black'))
    d.append(draw.Circle(75 + (280/3)*4 + 40, 130 + 100 + 90, 25, fill='#888888', stroke_width=2, stroke='black'))
    d.append(draw.Rectangle(75 + (280/3)*4 + 40, 130 + 100 + 160 - 5, 20, 10, rx=10, ry=10, fill="#888888", fill_opacity=0.0, stroke="#000000", stroke_width=2))
    d.append(draw.Rectangle(75 + (280/3)*4 + 40 - 5, 130 + 100 + 90, 10, 20, rx=10, ry=10, fill="#888888", fill_opacity=0.0, stroke="#000000", stroke_width=2))

    #       Speaker
    for i in range(6):
        p = draw.Path(stroke_width=2, stroke="#000000", fill='black', fill_opacity=0.0)
        p.M(75 + (280/3)*4, 130 + 100 - 20 - 10 * i)
        p.H(75 + (280/3)*4 + 80)
        d.append(p)

    #Output
    d.setRenderSize(size[0], size[1])

    return d

#Prefill Intensity Values
for i in range(pix.shape[0] * pix.shape[1]):
    render(i)

#Render to Images
with draw.animate_video("video.tiff", render) as anim:
    for i in range(pix.shape[0] * pix.shape[1]):
        anim.draw_frame(i)

#Render to SVG/PNG
#d = render(0)
#d.saveSvg("a.svg")
#d.savePng("a.png")

#View
webbrowser.open('file://' + os.path.realpath("video.tiff"))
input()

اجازه‌نامه

Image:

من، صاحب حقوق قانونی این اثر، به این وسیله این اثر را تحث اجازه‌نامهٔ ذیل منتشر می‌کنم:
w:fa:کرییتیو کامنز
انتساب انتشار مشابه
این پرونده تحت پروانهٔ Creative Commons Attribution-Share Alike 4.0 International منتشر شده است.
شما اجازه دارید:
  • برای به اشتراک گذاشتن – برای کپی، توزیع و انتقال اثر
  • تلفیق کردن – برای انطباق اثر
تحت شرایط زیر:
  • انتساب – شما باید اعتبار مربوطه را به دست آورید، پیوندی به مجوز ارائه دهید و نشان دهید که آیا تغییرات ایجاد شده‌اند یا خیر. شما ممکن است این کار را به هر روش منطقی انجام دهید، اما نه به هر شیوه‌ای که پیشنهاد می‌کند که مجوزدهنده از شما یا استفاده‌تان حمایت کند.
  • انتشار مشابه – اگر این اثر را تلفیق یا تبدیل می‌کنید، یا بر پایه‌ آن اثری دیگر خلق می‌کنید، می‌‌بایست مشارکت‌های خود را تحت مجوز یکسان یا مشابه با ا اصل آن توزیع کنید.

Source:

این پرونده تحت Expat License مجوزگذاری‌شده‌است که گاهی به عنوان مجوز ام‌ای‌تی شناخته می‌شود:

حق تألیف در © Laserlicht

گواهی می‌شود که هر فردی می‌تواند نسخه‌ای از این نرم‌افزار و متن‌های همراهش به صورت مجانی بدون هیچ گونه محدودیت برای استفاده، کپی، ویرایش، درون‌ریزی، انتشار، توسعه، تولید تحت مجوز زیر مجموعه یا فروش نرم‌افزار داشته باشد و همچنین دادن اجازه به اشخاص تولید کننده نرم‌افزار برای قید کردن شروط زیر:

این برچسب و اجازه‌نامه باید در تمام نسخه‌های بعدی نرم‌افزار باشد.

نرم‌افزار به همین صورت که هست ارائه می‌گردد و هیچ گونه گارانتی یا تعویض مفهومی یا ظاهری ندارد و شامل قوانین تجاری نمی‌شود و مناسب موارد خاصی هست و موارد دیگر را پشتیبانی نمی‌کند. در هیچ یک از موارد درون یا مرتبط با نرم‌افزار ، توسعه‌دهنده و استفاده کننده، مسئول خرابکاری یا هر قصدی دیگری نیستند.


برای بارگذارنده‌ها: اجازه‌نامه ام‌ای‌تی موارد مختلفی را در بر می‌گیرد و ممکن است شما جزئیات دقیق‌تری را بخواهید. برای دیدن جزئیات بیشتر {{MIT}} را کلیک کنید.

این نگاره با توجه به رهنمودهای نگاره باکیفیت ارزیابی‌شده و نگارهٔ باکیفیت در نظر گرفته شده‌است.

العربية  جازايرية  беларуская  беларуская (тарашкевіца)  български  বাংলা  català  čeština  Cymraeg  Deutsch  Schweizer Hochdeutsch  Zazaki  Ελληνικά  English  Esperanto  español  eesti  euskara  فارسی  suomi  français  galego  עברית  हिन्दी  hrvatski  magyar  հայերեն  Bahasa Indonesia  italiano  日本語  Jawa  ქართული  한국어  kurdî  Lëtzebuergesch  lietuvių  македонски  മലയാളം  मराठी  Bahasa Melayu  Nederlands  Norfuk / Pitkern  polski  português  português do Brasil  rumantsch  română  русский  sicilianu  slovenčina  slovenščina  shqip  српски / srpski  svenska  தமிழ்  తెలుగు  ไทย  Tagalog  Türkçe  toki pona  українська  vèneto  Tiếng Việt  中文  中文(简体)  中文(繁體)  +/−

عنوان

شرحی یک‌خطی از محتوای این فایل اضافه کنید

آیتم‌هایی که در این پرونده نمایش داده شده‌اند

توصیف‌ها

source of file انگلیسی

checksum انگلیسی

8d26037a7a752fe6aef5f771c3387417437262e1

۶٬۹۳۰٬۵۲۱ بایت

۳٫۸۴۰۰۰۰۰۰۰۰۰۰۰۰۳ ثانیه

۵۳۲ پیکسل

۵۴۶ پیکسل

تاریخچهٔ پرونده

روی تاریخ/زمان‌ها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید.

تاریخ/زمانبندانگشتیابعادکاربرتوضیح
کنونی‏۷ نوامبر ۲۰۲۱، ساعت ۱۸:۴۲تصویر بندانگشتی از نسخهٔ مورخ ‏۷ نوامبر ۲۰۲۱، ساعت ۱۸:۴۲۵۴۶ در ۵۳۲ (۶٫۶۱ مگابایت)Laserlichtcomment edit
‏۷ نوامبر ۲۰۲۱، ساعت ۱۷:۴۱تصویر بندانگشتی از نسخهٔ مورخ ‏۷ نوامبر ۲۰۲۱، ساعت ۱۷:۴۱۵۴۶ در ۵۳۲ (۶٫۶۱ مگابایت)Laserlichtwhite BG
‏۷ نوامبر ۲۰۲۱، ساعت ۱۷:۳۹تصویر بندانگشتی از نسخهٔ مورخ ‏۷ نوامبر ۲۰۲۱، ساعت ۱۷:۳۹۵۴۶ در ۵۳۲ (۶٫۹۵ مگابایت)LaserlichtUploaded own work with UploadWizard

صفحهٔ زیر از این تصویر استفاده می‌کند:

کاربرد سراسری پرونده

ویکی‌های دیگر زیر از این پرونده استفاده می‌کنند:

فراداده