Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > альфа канал |
Автор: Сisa 1.9.2014, 16:05 |
Подскажите, пожалуйста, как можно получить значение альфа канала для отдельного пикселя изображения? |
Автор: arto 1.9.2014, 16:32 |
http://www.perlmonks.org/?node_id=945617 ? |
Автор: Сisa 1.9.2014, 18:54 |
В тех примерах самый лучший результат : 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 Он пишет "Не повезло.","Тем не менее не работает. Что мне не хватает?" и т.п. И альфа таки нету. Перевод был машинный, может я что не понял. |
Автор: arto 2.9.2014, 07:37 |
в смысле нет альфы? |
Автор: Сisa 2.9.2014, 18:01 |
Альфа в рисунке. А значение альфы для отдельного пикселя как получить в переменную perl? |
Автор: arto 2.9.2014, 21:42 |
ачто у вас именно не получилось? приведите код. |
Автор: Сisa 3.9.2014, 12:09 | ||
Для рисунка в первоначальном варианте альфа пишет значение 0. В GIMPе пытаюсь добавить прозрачность в рисунок, чтобы считать не 0, и теперь dzsoft пишет "Cannot load Imager=HASH(0x348afc): not a BMP file at alfa.pl line 8" |
Автор: arto 3.9.2014, 12:32 |
может у вас с форматом проблемы? # file /tmp/*.bmp /tmp/14.bmp: PC bitmap, Windows 3.x format, 591 x 789 x 16 /tmp/a14.bmp: data # |
Автор: Сisa 3.9.2014, 12:46 |
Поищу готовые фото с прозрачностью, чтобы получить не 0. |
Автор: Сisa 3.9.2014, 14:27 |
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. |
Автор: Сisa 3.9.2014, 15:12 | ||||||
+ setpixel и новый рисунок, а как его сохранить? явно не так:
Добавлено через 13 минут и 49 секунд
Ура! Есть. Остался вопрос только с jpg, png. |
Автор: arto 3.9.2014, 15:31 |
у меня 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 # а у вас? |
Автор: DProf 3.9.2014, 16:13 |
Вы можете также попробовать другие библиотеки, они мощнее чем Imager http://search.cpan.org/~lds/GD-2.53/GD.pm http://www.graphicsmagick.org/perl.html рекомендую GD |
Автор: Сisa 3.9.2014, 23:02 | ||
# perl -MImager -le 'while(($a,$b)=each%Imager::formats){print"$a: $b"}' perl -MImager -le 'while(($a,$b)=each%Imager::formats){print"$a: $b"}' не показывает ничего. Такой код:
пишет : try png try gif try jpeg try tiff try ppm try ico и ничего не сохраняет. хотя в нем и присутствует в списке тип файла иконка, так что сохраняю только $image->write(file => "foo.ico"). Значит $Imager::formats не работает, возможно версия другая какая то у меня. Придется пробовать другие библиотеки для jpg, png. Возможно GD. |
Автор: arto 4.9.2014, 07:28 |
что именно вы сохраняете? |
Автор: Сisa 4.9.2014, 09:11 | ||
Добавлено через 9 минут и 7 секунд получаю: ... 100 x 35 --- shade = 32, 36, 45, 233 ---- shade = 32, 36, 45, 112 100 x 36 --- shade = 44, 55, 66, 213 ---- shade = 44, 55, 66, 112 100 x 37 --- shade = 83, 110, 122, 199 ---- shade = 83, 110, 122, 112 100 x 38 --- shade = 110, 129, 150, 196 ---- shade = 110, 129, 150, 112 100 x 39 --- shade = 109, 131, 155, 199 ---- shade = 109, 131, 155, 112 100 x 40 --- shade = 107, 130, 155, 202 ---- shade = 107, 130, 155, 112 ... и пару новых файлов иконок, третьего же нового файла нет. |
Автор: arto 4.9.2014, 12:50 |
# perl -MImager -le '$a=Imager->new;$a->read(file=>$ARGV[0])or die $a->errstr;foreach(keys%Imager::formats){$a->write(file=>$ARGV[1].".$_",type => $_) or warn $a->errstr}' 14.bmp 1 # file 1.* 1.bmp: PC bitmap, Windows 3.x format, 591 x 789 x 24 1.ft2: empty 1.ifs: empty 1.jpeg: JPEG image data, JFIF standard 1.01 1.png: PNG image data, 591 x 789, 8-bit/color RGB, non-interlaced 1.pnm: Netpbm PPM "rawbits" image data, size = 591 x 789 1.raw: data 1.tga: Targa image data - RGB - RLE 591 x 789 1.tiff: TIFF image data, little-endian # соберите сами себе Imager. |
Автор: Сisa 4.9.2014, 16:20 |
Н-да, соберите сами себе... Windows XP, perl 5.14.2, activestate free: ppm.exe : Imager 092 - remove Imager-1.000 - install а дальше в списке доступных программ ни png, ни jpg для Imager. http://search.cpan.org/~tonyc/Imager-1.000/Imager.pm Imager-File-JPEG-0.88.tar.gz Imager-File-PNG-0.91.tar.gz - эти не инсталлируются. |
Автор: arto 5.9.2014, 07:50 |
если так необходим windowsxp, поставте виртуалку и туда линух. там сможете собрать себе какой надо Imager. |
Автор: Сisa 5.9.2014, 11:31 |
я ж только учусь! линух многовато будет для начала ![]() arto, спасибо! |
Автор: arto 5.9.2014, 12:22 |
хвост надо рубить сразу, а не кусками, как добрый хозяин. |