Dosya:CRT image creation animation.gif

Sayfa içeriği diğer dillerde desteklenmemektedir.
Vikipedi, özgür ansiklopedi

CRT_image_creation_animation.gif((546 × 532 piksel, dosya boyutu: 6,61 MB, MIME tipi: image/gif), döngüye girdi, 192 kare, 3,8 sn)


Özet

Açıklama
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.
Tarih
Kaynak Yükleyenin kendi çalışması
Yazar 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()

Lisanslama

Image:

Ben, bu işin telif sahibi, burada işi aşağıdaki lisans altında yayımlıyorum:
w:tr:Creative Commons
atıf benzer paylaşım
Bu dosya, Creative Commons Atıf-Benzer Paylaşım 4.0 Uluslararası lisansı ile lisanslanmıştır.
Şu seçeneklerde özgürsünüz:
  • paylaşım – eser paylaşımı, dağıtımı ve iletimi
  • içeriği değiştirip uyarlama – eser adaptasyonu
Aşağıdaki koşullar geçerli olacaktır:
  • atıf – Esere yazar veya lisans sahibi tarafından belirtilen (ancak sizi ya da eseri kullanımınızı desteklediklerini ileri sürmeyecek bir) şekilde atıfta bulunmalısınız.
  • benzer paylaşım – Maddeyi yeniden karıştırır, dönüştürür veya inşa ederseniz, katkılarınızı orijinal olarak aynı veya uyumlu lisans altında dağıtmanız gerekir.

Source:

Expat Lisansı altında, bazen MIT Lisansı olarak da bilinir:

Telif hakkı © Laserlicht

Bu yazılımın ve ilişkili belgelendirme dosyalarının ("Yazılım") bir kopyasını alan herhangi bir kişiye, kullanma, kopyalama, değiştirme, birleştirme hakları da dahil ancak bunlarla sınırlı olmamak üzere, herhangi bir sınırlama olmaksızın, Yazılım ile ilgili olarak erişim izni verilir. Yazılımın kopyalarını yayınlamak, lisanslamak ve/veya satmak ve Yazılımın sağlandığı kişilere aşağıdaki koşullara tabi olarak izin vermek için:

Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm kopyalarına veya önemli bölümlerine dahil edilecektir.

Yazılım, satılabilirlik, belirli bir amaca uygunluk ve ihlal etmeme dahil ancak bunlarla sınırlı olmamak üzere, açık veya zımni hiçbir garanti olmaksızın "olduğu gibi" sağlanır. Hiçbir durumda yazarlar veya telif hakkı sahipleri, Yazılım, sözleşme veya haksız fiilden doğan veya Yazılım ile ilgili olarak veya Yazılımın kullanımından veya bunlarla ilgili diğer anlaşmalardan kaynaklanan herhangi bir talep, hasar veya diğer yükümlülüklerden sorumlu tutulamaz.


Yükleyiciye: MIT Lisansının çeşitli sürümleri vardır, lisansı daha kesin bir şekilde belirtmek isteyebilirsiniz. Ayrıntıları görmek için {{MIT}} bağlantısına tıklayın.

Bu resim, kaliteli resim kılavuzundaki şartlar göz önüne alınarak topluluk tarafından kaliteli resim seçilmiştir.

العربية  جازايرية  беларуская  беларуская (тарашкевіца)  български  বাংলা  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  中文  中文(简体)  中文(繁體)  +/−

Altyazılar

Bu dosyanın temsil ettiği şeyin tek satırlık açıklamasını ekleyin.

Bu dosyada gösterilen öğeler

betimlenen

7 Kasım 2021

image/gif

8d26037a7a752fe6aef5f771c3387417437262e1

6.930.521 Bayt

3,840000000000003 saniye

532 piksel

546 piksel

Dosya geçmişi

Dosyanın herhangi bir zamandaki hâli için ilgili tarih/saat kısmına tıklayın.

Tarih/SaatKüçük resimBoyutlarKullanıcıYorum
güncel18.42, 7 Kasım 202118.42, 7 Kasım 2021 tarihindeki sürümün küçültülmüş hâli546 × 532 (6,61 MB)Laserlichtcomment edit
17.41, 7 Kasım 202117.41, 7 Kasım 2021 tarihindeki sürümün küçültülmüş hâli546 × 532 (6,61 MB)Laserlichtwhite BG
17.39, 7 Kasım 202117.39, 7 Kasım 2021 tarihindeki sürümün küçültülmüş hâli546 × 532 (6,95 MB)LaserlichtUploaded own work with UploadWizard

Bu görüntü dosyasına bağlantısı olan sayfalar:

Küresel dosya kullanımı

Aşağıdaki diğer vikiler bu dosyayı kullanır:

Meta veri