丸パクリ。
前提
情報源
感謝。
手順
- GIMP起動
- メニュー
Filsters
→Python-fu
→コンソール
クリック - 以下のコードをペーストして実行する
from gimpfu import * img = gimp.Image(512, 512, RGB) layer = gimp.Layer(img, "layer01", 512, 512, RGBA_IMAGE, 100, NORMAL_MODE) layer.fill(TRANSPARENT_FILL) img.add_layer(layer, 0) gimp.Display(img) import cairo surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 512, 512) ctx = cairo.Context(surface) ctx.set_source_rgb(1.0, 0.0, 0.0) ctx.rectangle(128, 128, 256, 256) ctx.fill() import struct def get_rgba_str(bgra_buf): rgba_buf = "" l = len(bgra_buf) for i in range(l / 4): i0 = i * 4 i1 = i0 + 4 bgra = struct.unpack('@L', src[i0 : i1])[0] a = (bgra >> 24) & 0x0ff r = (bgra >> 16) & 0x0ff g = (bgra >> 8) & 0x0ff b = bgra & 0x0ff rgba = struct.pack('4B', r, g, b, a) rgba_buf += rgba return rgba_buf src = surface.get_data() dst = get_rgba_str(src) rgn = layer.get_pixel_rgn(0, 0, 512, 512, True, True) rgn[0:512, 0:512] = str(dst) layer.flush() layer.merge_shadow() layer.update(0, 0, 512, 512) pdb.gimp_displays_flush()
所感
やっと動作確認できた。
それにしてもビット操作か……。仕様もわからんし難しすぎる。パクらないと動作確認すらできない。
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux