Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
14 / 10 / 5
Регистрация: 16.09.2012
Сообщений: 89

ImageMagick: как получить коэффициент прозрачности пиксела

14.10.2012, 18:33. Показов 2343. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В perl цвет пикселя можно получить:
Perl
1
($r,$g,$b,$a)=split /,/, $image->Get("pixel[1,1]");
где четвертой цифрой идет прозрачность.

Пытаюсь найти метод позволяющий устанавливать прозрачность
отдельного пикселя в perl, но почему то не работает у меня
Image::Magick в этом случае ни так:
Perl
1
 $image->Set("pixel[$x,$y]"),"7f3ca200";
ни так:
Perl
1
 $image->Set("pixel[$x,$y]"),"7f7f3c3ca2a20000";
ни вместе с этим:
Perl
1
2
 $image->Set(alpha=>'Activate');
 $image->Transparent(color=>'white');
Может быть есть какие то варианты для установления прозрачности
отдельных пикселей в значения аналогичные значениям в js, т.е. в
интервале от полной прозрачности до непрозрачного полного цвета ?
(от 0 до 1)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2012, 18:33
Ответы с готовыми решениями:

Как изменится коэффициент прозрачности для потенциального барьера?
Движущаяся микрочастица с энергией Е встречает на своем пути прямоугольный потенциальный барьер , высота U которого больше энергии...

Плавное появление и исчезание формы, отследить коэффициент прозрачности
В чем ошибка? При запуске программы она просто плавно исчезает, но не появляется обратно. Я думаю что из за того, что не правильно прописан...

Как получить цвет пиксела в активном окне
Как сделать GET PIXEL в активном окне?! И клик по нему... Допустим, находится, определенный пиксель, и по нему, моментальный клик мыши,...

8
352 / 222 / 25
Регистрация: 30.09.2012
Сообщений: 548
14.10.2012, 18:57
Заглянул в документацию
SetPixel geometry=>geometry, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Opacity, Red, RGB, Yellow}, color=>array of float values, x=>integer, y=>integer, color=>array of float values set a single pixel. By default normalized pixel values are expected.
и обратил внимание на channel=>Alpha. Это оно? Документация на ImageMagick, PerlMagick здесь. Если не сложно, отпишитесь после того как попробуете. С изображениями работаю редко, но интересно узнать, чем закончилось.
1
14 / 10 / 5
Регистрация: 16.09.2012
Сообщений: 89
15.10.2012, 19:58  [ТС]
channel=>Alpha видимо так,
http://ru.scribd.com/doc/57984... ansparency
книга MARTIEN VERBRUGGEN "Graphics Programming with Perl" гл.12.2 освещает этот вопрос, но вот что то у меня не получается. То ли какие версии не те, книга то 10 лет назад издана.

Добавлено через 44 минуты
Начало:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use Image::Magick;
my $image = Image::Magick->new;
$image->Read( 'web2.png' );
my($xSize, $ySize) = $image->[0]->Get('width', 'height');
$image->Set(alpha=>'Activate');
$image->Transparent(color=>'white');
for (my $x = 0; $x < $xSize; $x++) {
 for (my $y = 0; $y < $ySize; $y++) {
  #$image->SetPixel(
    #geometry=>geometry, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Opacity, Red, RGB, Yellow}, color=>array of float values, x=>integer, y=>integer, color=>array of float values
  #);
 }
}
$image->Write('myNew.png');
Добавлено через 23 часа 57 минут
Используя GD::Simple можно задать цвет и прозрачность, примерно так как и требовалось,
Description на CPAN по нему вполне переводимый, может поэтому с ним и легче.
А вот с Image::Magick все же не выходит, хотя думал что именно с Magick-ом будет лучше.
1
352 / 222 / 25
Регистрация: 30.09.2012
Сообщений: 548
16.10.2012, 10:19
Цитата Сообщение от JoVan Посмотреть сообщение
Используя GD::Simple можно задать цвет и прозрачность, примерно так как и требовалось,
Description на CPAN по нему вполне переводимый, может поэтому с ним и легче.
А вот с Image::Magick все же не выходит, хотя думал что именно с Magick-ом будет лучше.
Спасибо за информацию. У меня как-то была задача увеличения контрастности рентгеновских снимков. Сделал на Image::Magick, но очень давно это было. Графические модули Perl-а, начиная с определённого момента переделывались. Если мне склероз не изменяет, это было связано с какими-то патентами gif.
0
14 / 10 / 5
Регистрация: 16.09.2012
Сообщений: 89
16.10.2012, 14:12  [ТС]
GD::Simple все же оочень примерно! Такой код "замерзает" после первого же цикла и дальше не выполняет свою работу:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;use GD::Simple;
my($x,$y)=(50,50);my($img1,$r,$g,$b,$a,$c);($r,$g,$b,$a)=(0,0,255,1);
$img1=GD::Simple->new($x,$y);
$img1->fgcolor(undef);
for(my $y1=1;$y1<$y; ++$y1){
 for(my $x1=1;$x1<$x; ++$x1){
  if($r<255){$r++;}else{$r=1;}
  $c=$img1->alphaColor($r,$g,$b,$a);
  si($img1,$x1,$y1, $c);
 }
}
open (DST,'>gd1.png');binmode DST;
print DST $img1->png();close DST;
sub si{my($img,$x,$y,$c)= @_;
 $img->bgcolor($c);
 $img->rectangle($x,$y,$x,$y);
}
Все же как с Image::Magick (или с чем то другим) нарисовать четкие полупрозрачные пиксели ?
Есть же в нем $image->SetPixel.
0
352 / 222 / 25
Регистрация: 30.09.2012
Сообщений: 548
17.10.2012, 10:25
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!perl
 
use strict;
use GD::Simple;
 
my($x,$y)=(50,50);my($img1,$r,$g,$b,$a,$c);($r,$g,$b,$a)=(0,0,255,1);
$img1=GD::Simple->new($x,$y);
$img1->fgcolor(undef);
for(my $y1=1;$y1<$y; $y1++){ # здесь и ниже поменял положение ++
 for(my $x1=1;$x1<$x; $x1++){
  if($r<255){$r++;}else{$r=1;}
  $c=$img1->alphaColor($r,$g,$b,$a);
  si($img1,$x1,$y1, $c);
 }
}
open (DST,'>gd1.png');binmode DST;
print DST $img1->png();close DST;
 
sub si{my($img,$x,$y,$c)= @_;
  $img->bgcolor($c);
  $img->rectangle($x,$y,$x,$y);
  }
Получается сиреневый квадрат с синей полоской вверху
0
14 / 10 / 5
Регистрация: 16.09.2012
Сообщений: 89
17.10.2012, 11:11  [ТС]
Да, квадрат, с полосками вверху, но полоски должны быть по идее не только вверху.
Скрипт нарисовал 5 полос с убыванием цвета и дальше просто застрял, остальные полоски не рисуются. Меняем на полноцветный ->new($x,$y,1); , получаем тоже квадрат, и цвет не застрял и полосок вполне достаточно, и цикл выполняется полностью, но теперь полоски отчего то размыты.
Я просматриваю полученный рисунок Внутренним просмотрщиком файлов Total Commander, так вот в нем при максимальном увеличении этого рисунка, размытие пропадает и появляется нормальный, желаемый рисунок. Что то не понятно. У Вас рисунок виден сразу с четкими пикселами?
0
352 / 222 / 25
Регистрация: 30.09.2012
Сообщений: 548
18.10.2012, 21:55
Слева и сверху белые полоски шириной 1 пиксель. Ниже белой полоски - 5 однопиксельных полосок, каждая из которых с градиентом, причём градиент не только по вертикали, между полосками, но и вдоль полоски. Всё, что ниже 5-ти полосок идёт с цветом fe00ff. Смотрел Gimp-ом с увеличением 1500%.
0
14 / 10 / 5
Регистрация: 16.09.2012
Сообщений: 89
19.10.2012, 16:38  [ТС]
Поставил и себе Gimp, при увеличении масштаба полоски тоже вижу. Размытость видимо из за каких то особенностей просмотровщиков, редакторов, может сглаживание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2012, 16:38
Помогаю со студенческими работами здесь

Как сделать так, чтобы при нажатии на кнопку прямоугольник перемещался на 2 пиксела вниз а если еще раз нажать то на два пиксела вверх
Привет Всем!!! Помогите справится с задачей, такая ситуация, как в Дельфи сделать так что бы при нажатии на кнопку прямоугольник...

Получить цвет пиксела из Image *.jpg
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TColor...

Доступ к видеопамяти: получить и изменить цвет пиксела экрана
Доброго времени суток! Задача такая - получить и изменить цвет пиксела экрана (хочу сделать изображение на экране размытым). Причем не...

Как получить 3-й коэффициент матем. модели при обработке однофакторного эксперимента
Добрый день, ребята помогите правильно написать расширенный план эксперимента для расчета коэффициентов матем. модели. Первые две матрицы...

System.ArgumentException при попытке снять скриншот с игры и получить цвет пиксела
Ребят помогите пожалуйста, работает некоторое время, потом летит к чертям. Public Function GetScreenshot() As Bitmap Dim...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru