LINUX.ORG.RU

формат картинок

 


0

1

нужен формат картинок вот с такими вот возможностями:

1) сжатие без потерь

2) возможность «пририсовать» к файлу снизу кусок, не перезаписывая файл целиком. например, если есть файл 100500x105px, нужно дорисовать к нему снизу кусок 105x105px, так чтобы результат был 100605x105px

3) еще альфа-канал неплохо бы

Известно ли науке нечто подобное?

★★★★★

Последнее исправление: MyTrooName (всего исправлений: 3)

Во всех форматах что-то в заголовке ещё меняют, imho. Может вам самим обычный gzip прикрутить? Он так умеет:

$ echo "123" | gzip -c > myimg.gz
$ echo "456" | gzip -c >> myimg.gz
$ zcat myimg.gz 
123
456
$
troosh
()

нужен формат картинок вот с такими вот возможностями:

Вам нужен какой то уже готовый формат или подойдет свой?

если есть файл 100500x105px, нужно дорисовать к нему снизу кусок 105x105px, так чтобы результат был 100605x105px

Нужно дорисовать снизу, но при этом увеличить ширину? Хм, странно.

andreyu ★★★★★
()
Ответ на: комментарий от funeralismatic

никто со сжатием этого не умеет. а уж тем более с альфаканалом.

Ну почему же? .txt.gz

Или можно .dat.gz, где .dat = file of record r,g,b,a: double end.

Хм... в начало файла ещё надо будет ширину картинки записать.

monk ★★★★★
()
Ответ на: комментарий от monk

txt.gz

ага, прям альфаканал.

Или можно .dat.gz, где .dat = file of record r,g,b,a: double end.

тогда тебе надо курить в сторону html/css

Хм... в начало файла ещё надо будет ширину картинки записать.

man sed

funeralismatic ★★★
()
Ответ на: комментарий от funeralismatic

ага, прям альфаканал.

А в чём проблема? Если есть вещественное число, соответствующее полю alpha для RGBA, то вполне себе альфа канал.

file of record r,g,b,a: double end.

курить в сторону html/css

file of record — бинарный файл, состоящий и структур.

На C++ будет что-то вроде

struct rgba {
   double r, g, b, a;
};

struct Image {
   unsigned width, height;
   rgba **points;
};

void write(fstream f, Image *image)
{
   f << image->width;
   for(row = 0; row < image->height; row++)
      for(col = 0; col < image->width; col++)
          f << image->points[row][col];
}
monk ★★★★★
()
Ответ на: комментарий от funeralismatic

Что-то зарапортовался...

void writeImage(fstream & f, Image *image)
{
   f.write(image->width, sizeof(unsigned));
   for(row = 0; row < image->height; row++)
      for(col = 0; col < image->width; col++)
          f.write(image->points[row][col], sizeof(rgba));   
}

или тебе сама идея не нравится?

monk ★★★★★
()
Ответ на: комментарий от funeralismatic

> Или можно .dat.gz, где .dat = file of record r,g,b,a: double end.

тогда тебе надо курить в сторону html/css

ты тупишь походу

MyTrooName ★★★★★
() автор топика
Ответ на: комментарий от monk

идея хорошая. еще палитру прикрутить, и получится bmp)

такой себе бмп с альфаканалом, до-записью и сжатием

MyTrooName ★★★★★
() автор топика
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от MyTrooName

ты тупишь походу

у меня сегодня пятница, я не могу думать ни о чём, кроме html+css.

funeralismatic ★★★
()
Ответ на: комментарий от MyTrooName

Палитра в BMP используется только если используется меньше 24 бит на пиксель. Альфа-канал в BMP тоже можно. И сжатие.

И если ширина остаётся постоянной, то можно и дописывать в конец меняя слегка заголовок.

Вот только что это такое-то? Копия баааальшого кассового чека? =)

frob ★★★★★
()

bmp в gz /thread

anonymous
()
Ответ на: комментарий от frob

Вот только что это такое-то?

большое количичество маленьких тайлов, которые нужно одновременно подгружать. посему выгоднее их в одном файле держать.

сейчас велосипедирую просмотрщик картинок, хочу на нем попробовать, на превьюшках. хотя для превьюшек вряд ли выгода большая будет

MyTrooName ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.