crazyinsomniac has asked for the wisdom of the Perl Monks concerning the following question:
According to somewhere in the perl Tk docs, blank or transparent areas of Photos will register as having an RGB value of 0,0,0 and that is indeed what happens. The problem is that RGB 0,0,0 also represents the color black.
What I want to know is, how do I distinguish from a transparent pixel, and a black one?
Is there a Tk way, or will I have to resort to using GD or Image something (which I fear I might if i want this).
It's true, well at least for the default target, that I could remove all black from the image, but that is too constricting.
Here is some code (in readmore tags) demonstrating the "black" v. "transparent" pixel issue (with apologies to OeufMayo):
#!/usr/bin/perl -wl use strict; #|\ /| use Tk 8; #| \ / | use vars qw/ %OQ /; # \_oO_/ # | > | # `--' $OQ{MW} = new Tk::MainWindow(-background=>'black', -width=>300, -height=>300, ,);#:D->pack(); $OQ{MW}->title("OeufMayo draw ++ ~ image altered and used without perm +ission"); $OQ{MW}->resizable(0,0); use vars qw/ $DEFTARGET/; # why this not in %OQ, I don't know $DEFTARGET = q{ R0lGODlhhQDEAPcAAAAAAAAAQAAAgAAA/wAgAAAgQAAggAAg/wBAAABAQABAgABA/wBgAA +BgQABg gABg/wCAAACAQACAgACA/wCgAACgQACggACg/wDAAADAQADAgADA/wD/AAD/QAD/gAD//y +AAACAA QCAAgCAA/yAgACAgQCAggCAg/yBAACBAQCBAgCBA/yBgACBgQCBggCBg/yCAACCAQCCAgC +CA/yCg ACCgQCCggCCg/yDAACDAQCDAgCDA/yD/ACD/QCD/gCD//0AAAEAAQEAAgEAA/0AgAEAgQE +AggEAg /0BAAEBAQEBAgEBA/0BgAEBgQEBggEBg/0CAAECAQECAgECA/0CgAECgQECggECg/0DAAE +DAQEDA gEDA/0D/AED/QED/gED//2AAAGAAQGAAgGAA/2AgAGAgQGAggGAg/2BAAGBAQGBAgGBA/2 +BgAGBg QGBggGBg/2CAAGCAQGCAgGCA/2CgAGCgQGCggGCg/2DAAGDAQGDAgGDA/2D/AGD/QGD/gG +D//4AA AIAAQIAAgIAA/4AgAIAgQIAggIAg/4BAAIBAQIBAgIBA/4BgAIBgQIBggIBg/4CAAICAQI +CAgICA /4CgAICgQICggICg/4DAAIDAQIDAgIDA/4D/AID/QID/gID//6AAAKAAQKAAgKAA/6AgAK +AgQKAg gKAg/6BAAKBAQKBAgKBA/6BgAKBgQKBggKBg/6CAAKCAQKCAgKCA/6CgAKCgQKCggKCg/6 +DAAKDA QKDAgKDA/6D/AKD/QKD/gKD//8AAAMAAQMAAgMAA/8AgAMAgQMAggMAg/8BAAMBAQMBAgM +BA/8Bg AMBgQMBggMBg/8CAAMCAQMCAgMCA/8CgAMCgQMCggMCg/8DAAMDAQMDAgMDA/8D/AMD/QM +D/gMD/ //8AAP8AQP8AgP8A//8gAP8gQP8ggP8g//9AAP9AQP9AgP9A//9gAP9gQP9ggP9g//+AAP ++AQP+A gP+A//+gAP+gQP+ggP+g///AAP/AQP/AgP/A////AP//QP//gP///yH5BAEAAOAALAAAAA +CFAMQA AAj/AMEJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXM +mypcuX HpPIhEkzpkyZJHKSaFOzJ8WcSeQIHZqEBACePpMyvNlmqFOhOZEqnUqwjdWnWIUWlUS169 +WsYHN2 nRoUrNk2AJKM9SnTrFuja3uWdWs2bVyYc+mCBQDgrsu2es0mses3ZRvAgcGi7Vv45M3Ebg +czbkwS ceI2JLJKpjzyMWQ5fPliXcw5pOXERkOP5lv64+nAi0Nndpq6dUeZTT+D5rtTNG3WtjUy1Z +0agFDf Q0MHF/4VcuyyyI8DX24xSW7doY3XnU594uvEst0q/+9O0bpurarFAyBB3rv589mvY5XdPu +L3wMWj O40ttX7DvNhll9Zq4/n3n3wBCjibHLFxZ6BC98EmW1EC8lbggxAi+JlkAEiC22Hv7TYZhg +hFiB9f XGGm4W5qkViiiXrx1SI4ki0ooosJWbciZHz1R+NgOYU2I44FhXgegw4KdJNMhBFZkIc7Jj +YYVwlZ 5WSJUYLH3pUSwagXWltyCZGRRxo1pJhLSXLkU0mimeGaTrXpJpZwCoXWmXO+WCdUHea5VJ +bgjegn nXvKOaiSAB5J2qGE1jkYnowqCeiJPkb6457SWWqQl18aOuhhk3YqqKVFhUpXbZoimuiRF0 +YKJabo Qb46KKdSrpcqjaYGBmSqtNY66qy5Svhrnr1CBlekuMH61LGMkqnso806C+tmsxb72aJ+eq +bsfp46 mey2y3brorbgDoXqnD2W+xS1bt6p7lPYolnqu+HOSS69crDL5aP47sfsvkf1+5ubRQnMLZ +X7roqv uPV9a3CmCT/827AGviqxuRT75/DF/46rsMDxYjhYsOBSiGPBF2N1roEbp6xVxw1/rJfMzg +X54L08 aocphRm31vJlAz47GMvS6kUCzeeF/0ydtXbupK4kPVOmY5lIK8qwXz/jR7KxURfGNIM2lq +u0z1Wr HDa4HnZ9V9F0BU2vvmRbXfaah6nt1by68dsvWsExyRvbWOGNL9Rkcyib0zOf/e7VbN3Em1 +U8Iy6Y znvbXdOHK2LG21uU98s4TTpmqfnH+uHLt9eHwaaexGNTNXXS15WO79BYz82mzrLT27pSlh +UF42K5 5X6tqbSvPdffR5uVWvCdo1ah25Nb/ldZhq+n8PLS5Vr9euEZ/XlLqecbpE7Jqyxj9idml4 +Qk2/yz zeaJS88SZkHpaJ0tkqQGoJDSfay5+v8IoAD/gT26oKVSU/EQkyRhlfYFkD/JOZ8cUv+jGQ +ulxRYD zGBxOoVApeQvJ1DLSQa3wSHrdK+A6PmbJDLIQgKmp20dTIotjMIe7rWQhM+zE/LWszwHtl +CDLxSP rKZyFHDY8Ie2qF4EFUQCH/5wgNsoDqDuxBkePjGA24jNErOzwiuyMH+S6VSYCpMWEmDQix +SUjoC8 2MKcQAZalEliWthIP6IIKAlsHOF6cjbErngoJ05kIQlDVLfQdDGPD4Re25rkF6tgZidXTC +Ih/QaA MyIyiorbTgzJAhSgXFGB8mkD1FCEyADqTUtSs16QnhhFRTZlMXjMY/72+BlbNQZEIAJAIA +U4SgA1 ZZYkYGMrhacYRhovdJW8IZCy0hT/IO1SgLZ4ZPk2VMRGmsmR+WtDC2epsEJaMoOjXM/WJj +jGuGDP KnIMZNqa5xQKxTKDHJIcccq5lscxaH1AGqAc5akyd+pTfXX6nkt0ch1RLqaLs1Sk2fRnCx +zaM6AC XUlR+CmJXhZSoVkJ0vNsV8yIqqSO8GIgzyRoNI3KZpzzsWVcBDcUUa6TpPgpzjQx5VGVfD +BzI2Xn lzIJUazNFF5g42jl5LeS0bmMpjVFCQqPajWV3o2fTIWPU6cCIqFGNVybpAlQruqopJZkmV +yFE9yU stWwrmmsPqGhWcXqVZEACaVrPQw9a7IYnq41cXOlSRDvmrejkSVdfD1SqTwIv8Ce/2ewPk +moYc86 k54odrFr8mtNEmpVyJJTLjC17GfEApN1wtWyjXWJZwPLQKgS5yWFtKvL7vePJFqiTpxdSU +JNe1QG fjOaXVVIg9pKkBpVVmxt2GVzklZNgjyPN3n1TmajKsofeugSdHNqhdZV3Is88rPPOiQUo/ +lTX1Uo NYo7jHCIKbEObZeBjiyrd0+Kmj4+RDLYxVQTBZjFm1TUFjOcW3wim9yH8I+rRwngB48miY +a6zyjC wijXMPLfq47skev7Zgi9R8tCEbUq4jQrDXfyzX+MMjCAxdTpLEJejsmIfdvYRjQVvC7V6g +YzDO7Q XXdrSPz8VjH9dYh6Z+xIU4WvZJjubcgjNWs6wIk3Izsm8p62l52ovDZfQdZxWuJL5Pwc92 +/NjLKU b0xkJl8ZvBdOiE64vNjjLqQ4HkmtknMmILzgZLlrnlirXoKbh8a5ndnpit9oC9n/hTklhq +Nyv9Dc mPx0966GC04CCEAAwB2VQ+QhQGgEvaeVkScBAGA0nw2G1vpI2s4P09yVEoBpAqTA0SKG2Z +UEROl2 xj92UOobLt2MkoBbNRnVYJFJE25lkOykQNaKkUkKas1rhGTn0zIyXE4IQOpi+/fKc3a2tK +dN7Wpb +9rYzrZBAgIAOw==}; $OQ{MW}->bind( 'Tk::Canvas', '<ButtonPress>' => [ sub { print sprintf " TARG:|@_| R:%s G:%s B:%s", $DEFTARGET->get(@_[2,3]); }, Ev('b'), Ev('x'), Ev('y'), ,] ,); $OQ{C} = $OQ{MW}->Canvas(-width => 500, -height =>460, -background => 'pink', ,)->pack(); $DEFTARGET = $OQ{C}->Photo(-data => $DEFTARGET); $OQ{HEAD} = $OQ{C}->create('image', $DEFTARGET->width()/2, #x $DEFTARGET->height()/2, #y -image => $DEFTARGET, ,); # debugging purposes &MainLoop();
___crazyinsomniac_______________________________________
Disclaimer: Don't blame. It came from inside the void
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;"
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Tk::Photo and GIFs - is a pixel transparent or black?
by termix (Beadle) on Dec 26, 2001 at 18:32 UTC | |
| A reply falls below the community's threshold of quality. You may see it by logging in. |