پرونده:Wfm floodfill animation queue.gif

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

Wfm_floodfill_animation_queue.gif(۲۰۰ × ۲۰۰ پیکسل، اندازهٔ پرونده: ۳۱ کیلوبایت، نوع MIME پرونده: image/gif، چرخش‌دار، ۱۷۵ قاب، ۱۹ ثانیه)

خلاصه

توضیح Example image showing Floodfill animated using a queue structure
تاریخ
منبع اثر شخصی
پدیدآور Finlay McWalter
دیگر نسخه‌ها image:Wfm_floodfill_animation_stack.gif

اجازه‌نامه

من، صاحب حقوق قانونی این اثر، به این وسیله این اثر را تحث اجازه‌نامه‌های ذیل منتشر می‌کنم:
GNU head اجازهٔ کپی، پخش و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو، نسخهٔ ۱٫۲ یا هر نسخهٔ بعدتری که توسط بنیاد نرم‌افزار آزاد منتشر شده؛ بدون بخش‌های ناوردا (نامتغیر)، متون روی جلد، و متون پشت جلد، اعطا می‌شود. یک کپی از مجوز در بخشی تحت عنوان مجوز مستندات آزاد گنو ضمیمه شده است.
w:fa:کرییتیو کامنز
انتساب انتشار مشابه
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International, 3.0 Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic license.
شما اجازه دارید:
  • برای به اشتراک گذاشتن – برای کپی، توزیع و انتقال اثر
  • تلفیق کردن – برای انطباق اثر
تحت شرایط زیر:
  • انتساب – شما باید اعتبار مربوطه را به دست آورید، پیوندی به مجوز ارائه دهید و نشان دهید که آیا تغییرات ایجاد شده‌اند یا خیر. شما ممکن است این کار را به هر روش منطقی انجام دهید، اما نه به هر شیوه‌ای که پیشنهاد می‌کند که مجوزدهنده از شما یا استفاده‌تان حمایت کند.
  • انتشار مشابه – اگر این اثر را تلفیق یا تبدیل می‌کنید، یا بر پایه‌ آن اثری دیگر خلق می‌کنید، می‌‌بایست مشارکت‌های خود را تحت مجوز یکسان یا مشابه با ا اصل آن توزیع کنید.
می‌توانید مجوز دلخواه خود را برگزینید.

Creation

Created using the following Python program:

#!/usr/bin/python

# Basic Python program to render animations for Wikipedia floodfill
# article (not a general floodfill example, very far from a shining example).

# This example uses the four-way floodfill algorithm, and generates 
# example animations using both a stack and a queue as intermediate
# storage schemes.

# Requirements:
# * python
# * Python Imaging Library (PIL)
# * ImageMagick (used to compile intermediate images to GIF animations)
# 
# The os.system() calls are written for unix; changing them for windows
# should be trivial

# Copyright (C) 2008 Finlay McWalter. 
# Licence: your choice from GFDL, GPLv2, GPLv3, CC-by-SA2.0
 

import os, Image, ImageColor, ImageDraw
from collections import deque

def floodfill(img, 
              (startx, starty), 
              targetcolour, 
              newcolour, 
              dumpEveryX=70,
              pattern=None,
              useQueue=False,
              startIndex=0):
    
    if useQueue:
        workpile = deque();
        getpoint = workpile.popleft
    else:
        workpile = []
        getpoint = workpile.pop

    max=0
    count=0

    workpile.append((startx,starty))
    while len(workpile)> 0:
        x,y=getpoint()
        
        if len(workpile)> max: 
            max=len(workpile)

        if img.getpixel((x,y)) == targetcolour:
            img.putpixel((x,y), newcolour)
            
            # every few pixels drawn, dump an image showing our progress
            count += 1
            if (count%dumpEveryX)==0 and pattern != None:
                img.save(pattern %(startIndex+count))

            # this demo code doesn't handle the case where we get to the edge
            if img.getpixel((x-1,y))== targetcolour: workpile.append((x-1,y))
            if img.getpixel((x+1,y))== targetcolour: workpile.append((x+1,y))
            if img.getpixel((x,y-1))== targetcolour: workpile.append((x,y-1))
            if img.getpixel((x,y+1))== targetcolour: workpile.append((x,y+1))

    print '    done with count %d, max %d' % (count,max)
    return count

def make_floodfill_example(filename, use_queue):
    print 'making image '+filename
    print '  removing old files'
    os.system('rm -f out*.png ' +filename )

    i = Image.new('RGB', (200,200), 'white')

    # draw a rough ying-yang
    draw = ImageDraw.Draw(i)
    draw.ellipse((30,30,170,170), outline='black')
    draw.arc((65,100,135,170), 90,270, fill='black')
    draw.arc((64,30,134,100), 270,90, fill='black')
    draw.ellipse((80,45,120,85), outline='black')
    draw.ellipse((80,115,120,155), outline='black')
    del draw

    print '  filling'
    redcount = floodfill(i, 
                         (100, 90), 
                         (255,255,255), #white
                         (255,0,0), #red
                         useQueue = use_queue,
                         pattern='out_%05d.png')

    print '  filling'
    bluecount = floodfill(i,
                          (110,110),
                          (255,255,255), # white
                          (0,0,255), # blue
                          useQueue = use_queue,
                          pattern='out_%05d.png',
                          startIndex=redcount)

    # push some extra frames of animation so we can see the finished fill
    for x in range(redcount+bluecount,redcount+bluecount+20):
        i.save('out_%05d.png' %(x))    

    print '  converting to animated GIF - this may take several minutes'
    os.system ('convert -loop 0 out*.png '+filename)

# draw one example image using a FIFO as the means of storing points,
# and another using a LIFO.
make_floodfill_example('wfm_floodfill_animation_queue.gif', True)
make_floodfill_example('wfm_floodfill_animation_stack.gif', False)
print 'done'

عنوان

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

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

توصیف‌ها

source of file انگلیسی

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

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

تاریخ/زمانبندانگشتیابعادکاربرتوضیح
کنونی‏۸ آوریل ۲۰۱۴، ساعت ۲۳:۰۷تصویر بندانگشتی از نسخهٔ مورخ ‏۸ آوریل ۲۰۱۴، ساعت ۲۳:۰۷۲۰۰ در ۲۰۰ (۳۱ کیلوبایت)CountingPineOptimise file size using GIMP
‏۲۴ اوت ۲۰۰۸، ساعت ۱۵:۲۸تصویر بندانگشتی از نسخهٔ مورخ ‏۲۴ اوت ۲۰۰۸، ساعت ۱۵:۲۸۲۰۰ در ۲۰۰ (۲۴۱ کیلوبایت)Finlay McWalter{{Information |Description= |Source= |Date= |Author= |Permission= |other_versions= }}
‏۲۴ اوت ۲۰۰۸، ساعت ۱۴:۲۸تصویر بندانگشتی از نسخهٔ مورخ ‏۲۴ اوت ۲۰۰۸، ساعت ۱۴:۲۸۲۰۰ در ۲۰۰ (۲۳۶ کیلوبایت)Finlay McWalter{{Information |Description=Example image showing Floodfill animated using a queue structure |Source=self made |Date=24th August 2008 |Author=Finlay McWalter |Permission=see below |other_versions=[[:image:Wfm_floodfill_animation_queue.gif

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

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

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