2022-01-01から1年間の記事一覧

Gimpで4つの同じサイズの画像を縦横に並べて結合する

前提 対象の画像のサイズは、幅800ピクセル、高さ600ピクセル。 対象の画像を縮小して結合し、結合した画像のサイズを元のサイズと同じサイズにする。 対象の画像は下記の4つ 下の画像が完成したもの。 新しい画像を作成する 「ファイル」→「新しい画像」 キ…

ImageMagickで4枚の同じサイズの画像を縦横に結合する

4つの同じサイズの画像ファイルがディレクトリに置かれている。 $ ls 1.jpg 2.jpg 3.jpg 4.jpg $ identify * 1.jpg JPEG 800x600 800x600+0+0 8-bit sRGB 8230B 0.000u 0:00.000 2.jpg JPEG 800x600 800x600+0+0 8-bit sRGB 8229B 0.000u 0:00.000 3.jpg JPE…

Pythonでheif-convertを実行してHEICファイルをJPEGに一括で変換する

カレントディレクトリの拡張子が「HEIC」のファイルが変換対象 変換後のファイル名はHEICファイルの拡張子を「jpg」に変えたもの import subprocess import glob files = glob.glob('*.HEIC') for file in files: file2 = file[:-5] + '.jpg' subprocess.run…

PythonでCSVファイルを辞書に変換する 1列目をキーにして2列目以降を値にする

PythonでCSVファイルを辞書に変換する 1列目をキーにして2列目以降を値にするCSVファイルの内容 sample.csv k1,v11,v12 k2,v21,v22 k3,v31,v32with open('sample.csv', 'r') as f: d = {} for line in f: k, v = line.rstrip().split(',', 1) #最初の1項目の…

EndeavourOSで日本語入力を設定する

パッケージをインストールする インストールするパッケージ fcitx5, fcitx5-configtool, fcitx5-gtk, fcitx5-qt, fcitx5-mozc最初の4個のパッケージは、「fcitx5-im」というグループに入っているので、 「fcitx5-im」をインストールすれば、まとめてインスト…

Python Pillow(PIL)で画像を読み込んでNumPyの配列に変換してRGBの要素ごとに編集する

下記の画像を使用しました。 Biljana JovanovicによるPixabayからの画像 from PIL import Image import numpy as np pil_img = Image.open('eggs-gbd58ab03b_640.png') print('モード', pil_img.mode) np_img = np.array(pil_img) #PILからnumpyへ変換 np_im…

Pythonのglobモジュールで複数の拡張子を指定してファイル一覧を取得する

カレントディレクトリの「画像」ディレクトリの中のファイルの中から 拡張子が「jpg」と「png」のファイルの一覧を取得する。 方法1 import glob types = ('jpg', 'png') files = [] for t in types: files += glob.glob('./画像/*.' + t) for file in files…

Pygame入門 ブロック崩しゲームを作る(途中) ボールと衝突したブロックを消す しかし、ボールはブロックに当たっても跳ね返らない

マウスの左クリックで開始します import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) FPS = 30 WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) BALL_SIZE = 20 PADDLE_WIDTH = 60 PADDLE_HEIGHT = 5 PADDL…

PythonのSympyを使って2点を結ぶ2本の線分の交点の座標をベクトルを使って計算する

import numpy import sympy #点p1と点p2を結ぶ線分と点p3と点p4を結ぶ線分の交点を求める def intersection(p1, p2, p3, p4): #各点をベクトルで表す a1 = numpy.array(p1) a2 = numpy.array(p2) a3 = numpy.array(p3) a4 = numpy.array(p4) #方程式で使う変…

forth入門

gforthのインストール Debian系のLinuxの場合 $ sudo apt install gforthgforthの起動 $ gforthgforthの終了 byeと入力するかCtrl+Dを押す1 + 2 を計算する 1 2 + .s1 + 2 * 3 を計算する 1 2 3 * + .s(1 + 2) * (3 + 4)を計算する 1 2 + 3 4 + * .sスタック…

Pygame入門 Sprite同士の衝突を検知して、そのSpriteを削除する

pygame.sprite.spritecollideでSprite同士の衝突を検知できる。 また、引数の指定によって、衝突したSpriteを削除できる。pygame.sprite.spritecollide(sprite, group, dokill) 2番めの引数のgroupに属するSpriteのうち、 1番目の引数のspriteと衝突している…

Pygame入門 ブロック崩しのパドルをスプライトで作る

スプライトの使い方 1.「pygame.sprite.Sprite」を継承してスプライトオブジェクトを作る 2.スプライトグループを作る 3.スプライトグループにスプライトオブジェクトを追加する 4.スプライトグループの更新を実行する グループに追加されているスプライトオ…

Pygame入門 ブロック崩しのパドルをマウスで動かす

import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) FPS = 30 WHITE = (255, 255, 255) GREEN = (0, 255, 0) PADDLE_WIDTH = 60 PADDLE_HEIGHT = 20 PADDLE_POS_Y = SCREEN.bottom - PADDLE_HEIGHT * 2 pygame.init() clock = pygame.time.Cloc…

Pygame入門 画像をSpriteにして動かす

import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) WHITE = (255, 255, 255) class Ball(pygame.sprite.Sprite): def __init__(self, image_file, pos, speed): pygame.sprite.Sprite.__init__(self) x, y = pos vx, vy = speed self.image = …

Pygame入門 画像を動かす

import pygame import sys SCREEN = pygame.Rect(0, 0, 400, 400) FPS = 30 WHITE = (255, 255, 255) def main(): pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(SCREEN.size) ball = pygame.image.load('ball.png') ball_wi…

Pygame入門 図形(四角)を動かす

import pygame import sys SCREEN_SIZE = (400, 400) WHITE = (255, 255, 255) RED = (255, 0, 0) FPS = 1 def main(): pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode(SCREEN_SIZE) ball = pygame.Rect(100, 100, 10, 10) wh…

Pygame入門 マウスポインターの座標を取得する

マウスポインターの座標を取得して、画面に数値で表示する。 import pygame from pygame.locals import * import sys SCREEN_SIZE = (400, 400) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) # 画面の大きさを設定する pygame.…

Pygame入門 図形(四角)を行列に並べて表示する

import pygame from pygame.locals import * # 定数QUITを使うため。importしない場合は、pygame.QUITとする。 import sys SCREEN_WIDTH = 400 SCREEN_HEIGHT = 300 SCREEN_SIZE = (SCREEN_WIDTH, SCREEN_HEIGHT) ROW = 3 # 表示する四角の行数 COLUMN = 5 #…

Pygame入門 図形(四角)を表示する

import pygame from pygame.locals import * # 定数QUITを使うため。importしない場合は、pygame.QUITとする。 import sys SCREEN_SIZE = (400, 300) def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) # 画面の大きさを設定する py…

Pygame入門 日本語文字列を表示する

IPAexゴシックフォントを使いました。プログラムを実行する前に、 IPAのサイトからフォントファイルをダウンロードして、 カレントディレクトリ(Pythonのスクリプトファイルが置かれているディレクトリ)に配置してください。 import pygame from pygame.loca…

Pygame入門 文字列を表示する

Pygameでは文字列を直接画面に表示することはできないそうです。 なので、下記のように3つの手順を実行します。 font = pygame.font.Font(None, 55) # フォントを設定する text = font.render('abc', True, (255, 255, 255)) # 表示する文字列を作る screen.…

Pygame入門 画面を表示する

import pygame # 定数QUITを使うため。importしない場合は、pygame.QUITとする。 from pygame.locals import * import sys def main(): pygame.init() screen = pygame.display.set_mode((400, 300)) # 画面の大きさを設定する pygame.display.set_caption('…

プログラミング言語のScratchをLinux(Debian)にインストールしてオフラインで使う

$ sudo apt install git $ sudo apt install nodejs npm $ git clone --depth=1 https://github.com/LLK/scratch-gui.git $ cd scratch-gui $ npm install $ npm run-script build「build」ディレクトリの中の「index.html」をブラウザで開く

Python入門 数当てゲーム

import random import time low = 1 high = 200 answer = random.randint(low, high) count = 0 start_time = time.time() print(f'{low}から{high}の数を当ててください。') while True: print('') print('入力してください > ', end='') guess = int(input…

LibreOfficeで文字列を日付に変換する

A列に日付を表す文字列を入力する。 変換できた文字列の例 1月1日 01月01日 2022年1月1日 2022年01月01日 2022/1/1 2022/01/01 1-1 01-01 2022-01-01 B列に「DATEVALUE」関数を入力する 引数はA列にする 例:B1セルならば「=DATEVALUE(A1)」 これにより、日…

Pythonのopenpyxlで取得したエクセルのセルのタプルをmapで値のリストに変換する

エクセルファイルの1行目のデータを取得して、 その中の各セルオブジェクトの値(valueプロパティ)のリストを作成する import openpyxl wb = openpyxl.load_workbook('example.xlsx') ws = wb.active a = list(map(lambda x: x.value, ws[1])) print(a) wb.cl…

PythonのopenpyxlでExcelファイルのデータを1行ずつ処理する

1行目がタイトル行だと仮定して、2行目から処理する import openpyxl wb = openpyxl.load_workbook('example.xlsx') ws = wb.active for row in ws.iter_rows(min_row=2): print(row[0].value) wb.close()

Pythonのwith文で複数のファイルを開く

「input.txt」の内容を「output.txt」に書き込むプログラム with (open('input.txt') as file_input, open('output.txt', mode='w') as file_output): for row in file_input: file_output.write(row) withの後に()を書いて、その中に複数のopenを書く方法は…

プログラミングで学べるもの

失敗をすることの大切さ プログラミングに限らず、 私たちは失敗したほうが早く成長すると思います。プログラミングは失敗しながら完成させることが多く 失敗によって成長することを実感しやすいと思います。また、失敗をしても損害が小さいので 失敗の大切…

PopplerでPDFファイルの1ページ目を削除する

編集前のファイル名: in.pdf 編集後のファイル名: out.pdf 編集前のファイルのページ数: 99ページ以下 もし、ページ数が3桁であれば、「%03d」とする。 分割したファイルの名前(02.pdf, 03.pdf, ...)の数字の部分の桁数を揃えておかないと 結合するときのペ…