Цифровой садик - приветственная

Цифровой садик - приветственная | Полный список всего, что тут есть | RSS | Подписаться через follow.it

15.02.2023

flame в png, и обратно - несделанное

Чего хочется

  • вкладывать flame, по которому генерится файл, в картинку, которая из него сгенерена, чтоб не терялись. Можно ориентироваться по одноименности.
    • в вкладывание явно нужен адрес папки или файлов, и хз, что указывать, картинки или наоборот, флеймы. В принципе, с учетом возможностей jwildfire, по флейму можно даже картинку генерить, потом в нее вкладывать. Но у меня чаще уже готовые есть.
  • вынимать флейм из картинки, когда хочется что-то с ним сделать.
    • в вынимание нужен адрес картинки, откуда брать, и адрес-имя, куда сохранять.

Начало файла

#!/bin/perl

use warnings;
use strict;
use utf8;
use Image::PNG::Const ':all';
use Image::PNG::Libpng ':all';

Без констант не распознаёт ключевые слова.

Всякие заготовки

Png

Считать файл.

my $png = read_png_file ('q.png');

Записать файл.

$png->write_png_file ('nice.png');

читать текстовые чанки

my $text_chunks = $png->get_text (); 

Писать чанки

$png->set_text ([\%chunk1, \%chunk2]);
if (libpng_supports ('UNKNOWN_CHUNKS')) {
    print "libpng supports unknown chunks \n";
}

Пример

use utf8;
use Image::PNG::Const ':all';
use Image::PNG::Libpng ':all';
my $png = create_write_struct ();
$png->set_IHDR ({width => 1, height => 1, bit_depth => 8,
                 color_type => PNG_COLOR_TYPE_GRAY});
$png->set_rows (['X']);
$png->set_text ([{
    compression => PNG_TEXT_COMPRESSION_NONE,
    key => "Copyright",
    text => "Copyright (C) 2020 Fat Cat",
}, {
    compression => PNG_ITXT_COMPRESSION_zTXt,
    key => "Copyright",
    lang_key => '著者権',
    lang => 'ja_JP',
    text => '©令和2年茉莉ニャンバーガーさん',
}]);
$png->write_png_file ('copyright.png');

Варианты сжатия

The value of compression controls the compression of the text. If compression is not supplied, a default value of PNG_TEXT_COMPRESSION_NONE is applied. The compression field can take the following values, available from Image::PNG::Const:

PNG_TEXT_COMPRESSION_NONE

TEXT = Printable ASCII and space characters. PNG_TEXT_COMPRESSION_zTXt

TEXT = Printable ASCII and space characters. PNG_ITXT_COMPRESSION_NONE

ITXT = International text, should be UTF-8. PNG_ITXT_COMPRESSION_zTXt

ITXT = International text, should be UTF-8.

lang

This should be set to name of the language of the text, if the text chunk is iTXt. According to the PNG specification, "It is an ISO 646.IRV:1991 [ISO 646] string consisting of hyphen-separated words of 1-8 alphanumeric characters each (for example cn, en-uk, no-bok, x-klingon, x-KlInGoN)."

lang_key
This corresponds to the "Translated keyword" of the PNG specification. Note that the user needs to supply key and "lang" as well as lang_key.
text
The value of "text" is added to the PNG as the text segment. This can be omitted if you just want to write a key value without any accompanying text.

Разное

@sub_array = grep(/$pattern/, @file); # поискать шаблон по массиву
$s = join('', @array); # слить строки в переменную

Если у вас есть мысли, комментарии, предложения или отклики по поводу этой страницы или этого цифрового сада в целом, напишите мне сообщение на agnessa@agnessa.pp.ru. Мне ооочень интересно!

Задонатить.


An IndieWeb Webring 🕸💍