횡 스크롤 배경 무늬는 어떻게 설정합니까?


10

내 벽지가 Super Mario World Yoshi 's Island 1의 사이드 스크롤이 되길 원합니다 . 일단 벽지가 끝까지 스크롤되면 시작 부분으로 자연스럽게 돌아갑니다.

나를 위해 이것을 달성 할 수있는 프로그램이나 XML이 있습니까? 그놈 쉘을 사용하고 있습니다.


6
그래서. . . 당신은 기본적으로 애니메이션 배경 화면을 갖고 싶어?
Sergiy Kolodyazhnyy

애니메이션이지만 측면 스크롤이 가능한 것을 찾을 수 없습니다.
Soren

3
내가 할 수있는 일은 그 이미지를 여러 개의 "스냅 샷"으로 나누고 XML 파일을 사용하여 설정된 기간으로 전환을 설정하는 것입니다. 그렇게하면 오래된 콘솔 게임에서와 같이 일종의 "보기"가 있고 경계를 넘고 다른보기가 화면에 나타나는 방식입니다. 좋은 생각이라고 생각하십니까?
Sergiy Kolodyazhnyy

2
나는 그것을 위해 스크립트를 작성하려고합니다. 며칠이 걸릴 수 있습니다. 작업 코드가 나오면 알려 드리겠습니다.
Sergiy Kolodyazhnyy

1
이 요청을 XScreenSaver 개발자에게 전달합니다. 개발자가 고려하기를 바란다는 훌륭한 아이디어처럼 들립니다. 요청한 배경 화면은 아니지만 "그래픽 욕구"를 충족시키는 대체 솔루션입니다. 마찬가지로 하나의 / Pictures 폴더 도이 방식으로 스크롤하여 스크롤 할 수 있습니다. 나는 당신의 요청을 정말로 좋아합니다!
WinEunuuchs2Unix

답변:


4

10/22/16 업데이트

이 질문의 요구 사항에 맞게 스크립트가 업데이트되었습니다 : https://askubuntu.com/a/840381/295286

전환 및 지속 시간은 선택 사항이며 기본값을 갖습니다. -s옵션은 배경 화면 크기 조정을 위해 추가됩니다 (시스템 설정의 타일, 배율, 스트레치 옵션과 동일).


내가 의견에서 말했듯이 이미지를 크기가 겹치거나 겹치는 조각으로 잘라서 슬라이드 쇼를 만들어야합니다. 나는 당신이 원하는 특정 이미지의 라이센스를 모르기 때문에 그것을 자르기 위해 당신에게 맡길 것입니다 ( 힌트 ).

그러나 여기 내가 작성한 애니메이션 배경 화면 생성기 스크립트가 있습니다. 사용법은 매우 간단합니다. -h옵션으로 표시된 바와 같이 :

usage: xml_wallpaper_maker.py [-h] -d DIRECTORY -t TRANSITION -l LENGTH [-o]

Serg's XML slideshow creator

optional arguments:
  -h, --help            show this help message and exit
  -d DIRECTORY, --directory DIRECTORY
                        Directory where images stored
  -t TRANSITION, --transition TRANSITION
                        transition time in seconds
  -l LENGTH, --length LENGTH
                        Time length in seconds per image
  -o, --overlay         Enables use of overlay transition

예:

./xml_wallpaper_maker.py -d Pictures/My_SideScroller_Images/ -t 5 -l 10 

소스 코드

GitHub 에서도 사용 가능

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

#
# Author: Serg Kolo , contact: 1047481448@qq.com
# Date: September 2 , 2016
# Purpose: A program that creates and launches XML slideshow
#      
# Tested on: Ubuntu 16.04 LTS
#
#
# Licensed under The MIT License (MIT).
# See included LICENSE file or the notice below.
#
# Copyright © 2016 Sergiy Kolodyazhnyy
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.


from gi.repository import Gio
import xml.etree.cElementTree as ET
import lxml.etree as etree
import argparse
import sys
import os

def gsettings_set(schema, path, key, value):
    """Set value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    if isinstance(value,list ):
        return gsettings.set_strv(key, value)
    if isinstance(value,int):
        return gsettings.set_int(key, value)
    if isinstance(value,str):
        return gsettings.set_string(key,value)

def parse_args():
        """ Parses command-line arguments """
        arg_parser = argparse.ArgumentParser(
        description='Serg\'s XML slideshow creator',
        )

        arg_parser.add_argument(
                                '-d', '--directory',
                                help='Directory where images stored',
                                type=str,
                                required=True
                                )

        arg_parser.add_argument(
                                '-t','--transition', 
                                type=float,
                                help='transition time in seconds',
                                required=True
                                )


        arg_parser.add_argument(
                                '-l','--length', 
                                type=float,
                                help='Time length in seconds per image',
                                required=True
                                )

        arg_parser.add_argument(
                                '-o','--overlay', 
                                action='store_true',
                                help='Enables use of overlay transition',
                                required=False
                                )
        return arg_parser.parse_args()



def main():
    """ Program entry point"""
    args = parse_args()
    xml_file = os.path.join(os.path.expanduser('~'),'.local/share/slideshow.xml')
    path = os.path.abspath(args.directory)
    duration = args.length
    transition_time = args.transition

    if not os.path.isdir(path):
       print(path," is not a directory !")
       sys.exit(1)

    filepaths = [os.path.join(path,item) for item in os.listdir(path) ]
    images = [ img for img in filepaths if os.path.isfile(img)]
    filepaths = None
    images.sort()
    root = ET.Element("background")
    previous = None

    # Write the xml data of images and transitions
    for index,img in enumerate(images):

        if index == 0:
           previous = img
           continue

        image = ET.SubElement(root, "static")
        ET.SubElement(image,"duration").text = str(duration)
        ET.SubElement(image,"file").text = previous

        if args.overlay: 
            transition = ET.SubElement(root,"transition",type='overlay')
        else:
            transition = ET.SubElement(root,"transition")
        ET.SubElement(transition,"duration").text = str(transition_time)
        ET.SubElement(transition, "from").text = previous
        ET.SubElement(transition, "to").text = img

        previous = img

    # Write out the final image
    image = ET.SubElement(root, "static")
    ET.SubElement(image,"duration").text = str(duration)
    ET.SubElement(image,"file").text = previous

    # Write out the final xml data to file
    tree = ET.ElementTree(root)
    tree.write(xml_file)

    # pretty print the data
    data = etree.parse(xml_file)
    formated_xml = etree.tostring(data, pretty_print = True)
    with open(xml_file,'w') as f:
        f.write(formated_xml.decode())

    gsettings_set('org.gnome.desktop.background',None,'picture-uri','file://' + xml_file)

if __name__ == '__main__':
    main()

각 컷에서 픽셀 x와 픽셀 y를 따라 이동 하면서 프로그래밍 방식으로 이미지를 n* n조각 으로 줄이는 방법을 알고 있습니까? 예를 들어, YI1 배경 화면에 대한 명령은 다음과 같 습니까? nncommand 1920 1080 1 0
Soren

@moo_we_all_do 실제로 이것은 이전에 요청되었습니다 : askubuntu.com/a/143501/295286
Sergiy Kolodyazhnyy

주위를 돌면서 처음 1920 픽셀을 가져 와서 뒤로 복사합니까?
Soren

@moo_we_all_do 루프 어라운드 란 무엇입니까? 당신이해야 할 일은 그 이미지를 균등 한 부분으로 나누고 폴더에 넣은 다음 해당 폴더의 스크립트 경로를 알려주는 것입니다. xml 배경 화면이 자동으로 전환되고 첫 번째 이미지로 다시 돌아 가기
Sergiy Kolodyazhnyy

루프로 스크롤을 의미하고 감사합니다. : D
Soren
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.