Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> альфа канал, получить значение альфа для картинки 
:(
    Опции темы
Сisa
Дата 1.9.2014, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как можно получить значение альфа канала для отдельного пикселя изображения?

PM MAIL   Вверх
arto
Дата 1.9.2014, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



PM MAIL ICQ   Вверх
Сisa
Дата 1.9.2014, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



В тех примерах самый лучший результат :
Image dimensions: height = 348, width = 349
 shade = 238, 238, 238
 shade = 255, 255, 255
 shade = 255, 255, 255
 shade = 238, 238, 238
 shade = 238, 238, 238
 shade = 238, 238, 238
Image dimensions: height = 348, width = 349
 shade = 204, 204, 204
 shade = 170, 170, 170
 shade = 136, 136, 136
 shade = 187, 187, 187
 shade = 153, 153, 153
Он пишет "Не повезло.","Тем не менее не работает. Что мне не хватает?" и т.п. 
И альфа таки нету. Перевод был машинный, может я что не понял.

Это сообщение отредактировал(а) Сisa - 1.9.2014, 18:56
PM MAIL   Вверх
arto
Дата 2.9.2014, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



в смысле нет альфы?
PM MAIL ICQ   Вверх
Сisa
Дата 2.9.2014, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Альфа в рисунке.
А значение альфы для отдельного пикселя как получить в переменную perl?

PM MAIL   Вверх
arto
Дата 2.9.2014, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ачто у вас именно не получилось?
приведите код.
PM MAIL ICQ   Вверх
Сisa
Дата 3.9.2014, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Код

#!/usr/bin/perl
use strict;
use warnings;
use Imager;
my $image_source = 'image/a14.bmp'; #shift @ARGV;

my $image = Imager->new;
$image->read( file => $image_source )
  or die "Cannot load $image: ", $image->errstr;

my $width  = $image->getwidth();
my $height = $image->getheight();
print "Image dimensions: height = $height, width = $width\n";

my $x = 10;
foreach my $y ( 10 .. 15 ) {
    my $color = $image->getpixel( x => $x, y => $y );
    my ( $r, $g, $b, $a ) = $color->rgba();
    print " shade = $r, $g, $b, $a \n";
}


my @color = $image->getpixel(
     x => [ 13, 15, 17, 17, 20 ],
     y => [ 17, 14, 18, 19, 15 ] );
for my $clr ( @color ){
  my ( $r, $g, $b, $a ) = $clr->rgba();
  print " shade2 = $r, $g, $b, $a \n";
}

Для рисунка в первоначальном варианте альфа пишет значение 0.
В GIMPе пытаюсь добавить прозрачность в рисунок, чтобы считать не 0, и теперь dzsoft пишет "Cannot load Imager=HASH(0x348afc): not a BMP file at alfa.pl line 8"

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  image.zip 579,49 Kb
PM MAIL   Вверх
arto
Дата 3.9.2014, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



может у вас с форматом проблемы?

# file /tmp/*.bmp
/tmp/14.bmp:  PC bitmap, Windows 3.x format, 591 x 789 x 16
/tmp/a14.bmp: data
#
PM MAIL ICQ   Вверх
Сisa
Дата 3.9.2014, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Поищу готовые фото с прозрачностью, чтобы получить не 0.
PM MAIL   Вверх
Сisa
Дата 3.9.2014, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



arto, спасибо!
Для иконок прозрачность отлична от 0.
Например:
 shade = 62, 63, 72, 249
 shade = 32, 36, 45, 233

И было бы вообще класс если бы так же читались rgba не только форматы:
formats bmp, ico, pnm, raw, sgi, tga available for reading,
но и  format 'jpeg', 'png' а они not supported для Imager.



PM MAIL   Вверх
Сisa
Дата 3.9.2014, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



Код

$blue = Imager::Color->new( $r, $g, $b, 112 );
$image->setpixel(x=>$x, y=>$y, color=>$blue);

+ setpixel и новый рисунок, 
а как его сохранить?
явно не так:
Код

open FILE, '> image/a01.jpeg' or die "Cannot open:$!";
binmode FILE;
print FILE $image;
close FILE;


Добавлено через 13 минут и 49 секунд
Код

$image->write(file => "foo.ico")
    or die "Cannot write: ",$image->errstr;

Ура! Есть.
Остался вопрос только с  jpg, png.
PM MAIL   Вверх
arto
Дата 3.9.2014, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



у меня imager показывает

# perl -MImager -le 'while(($a,$b)=each%Imager::formats){print"$a: $b"}'
ifs: 1
pnm: 1
bmp: 1
tga: 1
raw: 1
png: 1
tiff: 1
jpeg: 1
ft2: 1
#

а у вас?
PM MAIL ICQ   Вверх
DProf
Дата 3.9.2014, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.9.2012

Репутация: 1
Всего: 1



Вы можете также попробовать другие библиотеки, они мощнее чем Imager

http://search.cpan.org/~lds/GD-2.53/GD.pm
http://www.graphicsmagick.org/perl.html

рекомендую GD
PM MAIL   Вверх
Сisa
Дата 3.9.2014, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 18.1.2013

Репутация: нет
Всего: нет



# perl -MImager -le 'while(($a,$b)=each%Imager::formats){print"$a: $b"}'

perl -MImager -le 'while(($a,$b)=each%Imager::formats){print"$a: $b"}'
не показывает ничего.

Такой код:
Код

my $format;
my $file = 'image6';
  # try to save in one of these formats
SAVE:
for $format ( qw( png gif jpeg tiff ppm ico ) ) {
           print "try $format\n";
    # Check if given format is supported
    if ($Imager::formats{$format}) {
      $file.="_low.$format";
      print "Storing image as: $file\n";
      # documented in Imager::Files
      $thumb->write(file=>$file) or
        die $thumb->errstr;
      last SAVE;
    }
}

пишет :
try png
try gif
try jpeg
try tiff
try ppm
try ico
и ничего не сохраняет. хотя в нем и присутствует в списке тип файла иконка, так что сохраняю только $image->write(file => "foo.ico").
Значит $Imager::formats не работает, возможно версия другая какая то у меня. Придется пробовать другие библиотеки для jpg, png. Возможно GD.

Это сообщение отредактировал(а) Сisa - 3.9.2014, 23:05
PM MAIL   Вверх
arto
Дата 4.9.2014, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



что именно вы сохраняете?
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.