Re: Image::Imlib2 error

Ian B <[email protected]> Fri, 28 Mar 2025 14:42:27 +0000
Newsgroups gmane.comp.apache.mod-perl
Message-ID <CANAUX_SbG4=xDeHmYc1ZSbaDeroLD_woU6wYu_1SaseWVhUBBA@mail.gmail.com>
--000000000000fc9f480631681470
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Not sure of the answer, but just to try and put a couple of pieces
together...the
require DynaLoader <https://metacpan.org/module/DynaLoader/source>;
@ISA =3D qw(Exporter DynaLoader);
bootstrap Image::Imlib2 $VERSION;
lines will probably do this, and hence it will look and find the .xs file
you've found...

and as you've seen...

if (err =3D=3D IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT) {
                  Perl_croak(aTHX_ "Image::Imlib2 load error: No loader for
file format");
                }

so IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT feels like it's the key bit..=
.

Now, was Imlib2 custom compiled or installed as part of your o.s packages ?
I'm guessing it's definitely installed, but worth checking...

I can see some references to IMLIB2_LOADER_PATH when I look online, but not
sure that will help...

First question though maybe. What has changed recently ?

Ian



On Fri, Mar 28, 2025 at 2:04=E2=80=AFPM Ruben Safir <[email protected]> wr=
ote:

> I have an old image gallery that uses this libary in apache2 and modperl
>
> I made a small test program is it behaves like the server code
>
> #!/usr/bin/perl
> use warnings;
>
> use Image::Imlib2;
> my $image;
> #my $pic =3D
> qq(/usr/local/apache2/htdocs/images/2025_purim_amsterdam/DSC03652.JPG);
> my $pic =3D qq(/home/ruben/20130303_133505.jpg);
> if (-e $pic) {
>  print STDERR "File Exists =3D=3D> $pic\n";
>  $image =3D Image::Imlib2->load($pic);
> }
> $image->save("/home/ruben/out.jpg");
>
> [ruben@www3 Image]$ ~/bin/testimlib.pl
> File Exists =3D=3D> /home/ruben/20130303_133505.jpg
> Image::Imlib2 load error: No loader for file format at
> /home/ruben/bin/testimlib.pl line 10.
>
> the load() method seems to no longer recognize the file types to decode
> them.  It is very fustrating.  I looked at the code in
>
>
> /usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux-thread-multi/Image/Iml=
ib2.pm
>
> I can't even see the method load or where it might be inherited from
>
> package Image::Imlib2;
>
> use strict;
> use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
>
> require Exporter;
> require DynaLoader;
>
> @ISA =3D qw(Exporter DynaLoader);
>
> # Items to export into callers namespace by default. Note: do not export
> # names by default without a very good reason. Use EXPORT_OK instead.
> # Do not simply export all your public functions/methods/constants.
> @EXPORT =3D qw(
>     TEXT_TO_RIGHT
>     TEXT_TO_LEFT
>     TEXT_TO_UP
>     TEXT_TO_DOWN
>     TEXT_TO_ANGLE
> );
> $VERSION =3D '2.03';
>
> bootstrap Image::Imlib2 $VERSION;
>
> Image::Imlib2->set_cache_size(0);
>
> sub new_transparent {
>     my ( $pkg, $x, $y ) =3D @_;
>     my $pixel =3D pack( 'CCCC', 0, 0, 0, 0 );    # ARGB
>     return Image::Imlib2->new_using_data( $x, $y, $pixel x ( $x * $y ) );
> }
>
> sub new_using_data {
>     my ( $pkg, $x, $y, $data ) =3D @_;
>     if ( defined $data && 4 * $x * $y =3D=3D length $data ) {
>         return $pkg->_new_using_data( $x, $y, $data );
>     } else {
>         return undef;
>     }
> }
>
> sub autocrop {
>     my $image =3D shift;
>     my ( $x, $y, $w, $h ) =3D $image->autocrop_dimensions;
>     return $image->crop( $x, $y, $w, $h );
> }
>
> 1;
>
>
>
> It is not that large really.
>
> I do find it in the source code for the module in the C library
>
> [ruben@www3 Image]$ pwd
> /home/ruben/.cpan/build/Image-Imlib2-2.03-6/lib/Image
> [ruben@www3 Image]$
> [ruben@www3 Image]$ grep load ./*
> ./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load); /* prototype to pass
> -Wmissing-prototypes */
> ./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load)
> ./Imlib2.c:                image =3D imlib_load_image_with_error_return
> (filename, &err);
> ./Imlib2.c:                  Perl_croak(aTHX_ "Image::Imlib2 load error:
> File does not exist");
> ./Imlib2.c:                  Perl_croak(aTHX_ "Image::Imlib2 load error:
> File is directory");
> ./Imlib2.c:                  Perl_croak(aTHX_ "Image::Imlib2 load error:
> Permission denied");
> ./Imlib2.c:                  Perl_croak(aTHX_ "Image::Imlib2 load error:
> No loader for file format");
> ./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load_font); /* prototype to pass
> -Wmissing-prototypes */
> ./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load_font)
> ./Imlib2.c:     "Image::Imlib2::load_font",
> ./Imlib2.c:    font =3D imlib_load_font(fontname);
> ./Imlib2.c:        (void)newXSproto_portable("Image::Imlib2::load",
> XS_Image__Imlib2_load, file, "$$");
> ./Imlib2.c:        (void)newXSproto_portable("Image::Imlib2::load_font",
> XS_Image__Imlib2_load_font, file,
>
> I really need to fix this :(
>
> I would appreciate any help I can get. I never put a C program in perl
> code I don't even see how it inherited the load method or any
> constructor for image types.
>
>
> Seems in some source it has this =3D=3D>
>  CODE:
>         {
>                 Imlib_Image image;
>                 Imlib_Load_Error err;
>
>                 image =3D imlib_load_image_with_error_return (filename,
> &err);
>                 if (err =3D=3D IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST) {
>                   Perl_croak(aTHX_ "Image::Imlib2 load error: File does
> not exist");
>                 }
>
>                 if (err =3D=3D IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY) {
>                   Perl_croak(aTHX_ "Image::Imlib2 load error: File is
> directory");
>                 }
>
>                 if (err =3D=3D IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ=
) {
>                   Perl_croak(aTHX_ "Image::Imlib2 load error: Permission
> denied");
>                 }
>
>                 if (err =3D=3D IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT=
) {
>                   Perl_croak(aTHX_ "Image::Imlib2 load error: No loader
> for file format");
>                 }
>                 RETVAL =3D image;
>         }
>
>
> https://metacpan.org/release/LBROCARD/Image-Imlib2-2.03/source/lib/Image/=
Imlib2.xs#L156
>
>
> Not sure how this is even called by the module.  It is not an ISA
>
> this line seems to be the black hole for me
>  image =3D imlib_load_image_with_error_return (filename, &err);
>
> --
> So many immigrant groups have swept through our town
> that Brooklyn, like Atlantis, reaches mythological
> proportions in the mind of the world - RI Safir 1998
> http://www.mrbrklyn.com
> DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002
>
> http://www.nylxs.com - Leadership Development in Free Software
> http://www.brooklyn-living.com
>
> Being so tracked is for FARM ANIMALS and extermination camps,
> but incompatible with living as a free human being. -RI Safir 2013
>

--000000000000fc9f480631681470
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Not sure of the answer, but just to try and put a couple o=
f pieces together...the=C2=A0<div><code class=3D"gmail-perl gmail-keyword" =
style=3D"box-sizing:border-box;font-family:Menlo,Monaco,Consolas,&quot;Libe=
ration Mono&quot;,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quot;Courie=
r New&quot;,monospace;font-size:14px;padding:0px;color:rgb(0,102,153);backg=
round-color:rgb(245,245,245);border-radius:0px;white-space:pre;font-weight:=
700">require</code><span style=3D"color:rgb(51,51,51);font-family:Menlo,Mon=
aco,Consolas,&quot;Liberation Mono&quot;,&quot;Bitstream Vera Sans Mono&quo=
t;,Courier,&quot;Courier New&quot;,monospace;font-size:14px;white-space:pre=
;background-color:rgb(245,245,245)"> </span><code class=3D"gmail-perl gmail=
-plain" style=3D"box-sizing:border-box;font-family:Menlo,Monaco,Consolas,&q=
uot;Liberation Mono&quot;,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quo=
t;Courier New&quot;,monospace;font-size:14px;padding:0px;color:rgb(0,0,0);b=
ackground-color:rgb(245,245,245);border-radius:0px;white-space:pre"><a href=
=3D"https://metacpan.org/module/DynaLoader/source" style=3D"box-sizing:bord=
er-box;background-color:transparent;color:rgb(0,0,0)">DynaLoader</a>;</code=
></div><div><code class=3D"gmail-perl gmail-variable" style=3D"box-sizing:b=
order-box;font-family:Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&qu=
ot;Bitstream Vera Sans Mono&quot;,Courier,&quot;Courier New&quot;,monospace=
;font-size:14px;padding:0px;color:rgb(170,119,0);background-color:rgb(245,2=
45,245);border-radius:0px;white-space:pre">@ISA</code><span style=3D"color:=
rgb(51,51,51);font-family:Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;=
,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quot;Courier New&quot;,monos=
pace;font-size:14px;white-space:pre;background-color:rgb(245,245,245)"> </s=
pan><code class=3D"gmail-perl gmail-plain" style=3D"box-sizing:border-box;f=
ont-family:Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Bitstrea=
m Vera Sans Mono&quot;,Courier,&quot;Courier New&quot;,monospace;font-size:=
14px;padding:0px;color:rgb(0,0,0);background-color:rgb(245,245,245);border-=
radius:0px;white-space:pre">=3D </code><code class=3D"gmail-perl gmail-stri=
ng" style=3D"box-sizing:border-box;font-family:Menlo,Monaco,Consolas,&quot;=
Liberation Mono&quot;,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quot;Co=
urier New&quot;,monospace;font-size:14px;padding:0px;color:rgb(0,0,255);bac=
kground-color:rgb(245,245,245);border-radius:0px;white-space:pre">qw(Export=
er DynaLoader)</code><code class=3D"gmail-perl gmail-plain" style=3D"box-si=
zing:border-box;font-family:Menlo,Monaco,Consolas,&quot;Liberation Mono&quo=
t;,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quot;Courier New&quot;,mon=
ospace;font-size:14px;padding:0px;color:rgb(0,0,0);background-color:rgb(245=
,245,245);border-radius:0px;white-space:pre">;</code></div><div><code class=
=3D"gmail-perl gmail-plain" style=3D"box-sizing:border-box;font-family:Menl=
o,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Bitstream Vera Sans Mon=
o&quot;,Courier,&quot;Courier New&quot;,monospace;font-size:14px;padding:0p=
x;color:rgb(0,0,0);background-color:rgb(245,245,245);border-radius:0px;whit=
e-space:pre"><code class=3D"gmail-perl gmail-plain" style=3D"box-sizing:bor=
der-box;font-family:Menlo,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot=
;Bitstream Vera Sans Mono&quot;,Courier,&quot;Courier New&quot;,monospace;p=
adding:0px;border-radius:0px">bootstrap Image::Imlib2 </code><code class=3D=
"gmail-perl gmail-variable" style=3D"box-sizing:border-box;font-family:Menl=
o,Monaco,Consolas,&quot;Liberation Mono&quot;,&quot;Bitstream Vera Sans Mon=
o&quot;,Courier,&quot;Courier New&quot;,monospace;padding:0px;color:rgb(170=
,119,0);border-radius:0px">$VERSION</code><code class=3D"gmail-perl gmail-p=
lain" style=3D"box-sizing:border-box;font-family:Menlo,Monaco,Consolas,&quo=
t;Liberation Mono&quot;,&quot;Bitstream Vera Sans Mono&quot;,Courier,&quot;=
Courier New&quot;,monospace;padding:0px;border-radius:0px">;</code><br></co=
de></div><div>lines will probably do this, and hence it will look and find =
the .xs file you&#39;ve found...</div><div><br></div><div>and as you&#39;ve=
 seen...</div><div><br></div><div>if (err =3D=3D IMLIB_LOAD_ERROR_NO_LOADER=
_FOR_FILE_FORMAT) {<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 Perl_croak(aTHX_ &quot;Image::Imlib2 load error: No loader for f=
ile format&quot;);<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 }<br></div><div><br></div><div>so=C2=A0IMLIB_LOAD_ERROR_NO_LOADER_FOR_F=
ILE_FORMAT feels like it&#39;s the key bit...</div><div><br></div><div>Now,=
 was Imlib2 custom compiled or installed as part of your o.s packages ? I&#=
39;m guessing it&#39;s definitely installed, but worth checking...</div><di=
v><br></div><div>I can see some references to=C2=A0<span style=3D"backgroun=
d-color:rgb(227,230,232);color:rgb(12,13,14);font-family:ui-monospace,&quot=
;Cascadia Mono&quot;,&quot;Segoe UI Mono&quot;,&quot;Liberation Mono&quot;,=
Menlo,Monaco,Consolas,monospace;font-size:13px">IMLIB2_LOADER_PATH</span>=
=C2=A0when I look online, but not sure that will help...</div><div><br></di=
v><div>First question though maybe. What has changed recently ?</div><div><=
br></div><div><font color=3D"#000000" face=3D"Menlo, Monaco, Consolas, Libe=
ration Mono, Bitstream Vera Sans Mono, Courier, Courier New, monospace"><sp=
an style=3D"font-size:14px;white-space:pre">Ian<br></span></font><div><br><=
/div><div><br></div></div></div><br><div class=3D"gmail_quote gmail_quote_c=
ontainer"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Mar 28, 2025 at 2:0=
4=E2=80=AFPM Ruben Safir &lt;<a href=3D"mailto:[email protected]">ruben@mr=
brklyn.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">I have an old image gallery that uses this libary in apache2 and=
 modperl<br>
<br>
I made a small test program is it behaves like the server code<br>
<br>
#!/usr/bin/perl<br>
use warnings;<br>
<br>
use Image::Imlib2;<br>
my $image;<br>
#my $pic =3D<br>
qq(/usr/local/apache2/htdocs/images/2025_purim_amsterdam/DSC03652.JPG);<br>
my $pic =3D qq(/home/ruben/20130303_133505.jpg);<br>
if (-e $pic) {<br>
=C2=A0print STDERR &quot;File Exists =3D=3D&gt; $pic\n&quot;;<br>
=C2=A0$image =3D Image::Imlib2-&gt;load($pic);<br>
}<br>
$image-&gt;save(&quot;/home/ruben/out.jpg&quot;);<br>
<br>
[ruben@www3 Image]$ ~/bin/<a href=3D"http://testimlib.pl" rel=3D"noreferrer=
" target=3D"_blank">testimlib.pl</a><br>
File Exists =3D=3D&gt; /home/ruben/20130303_133505.jpg<br>
Image::Imlib2 load error: No loader for file format at<br>
/home/ruben/bin/<a href=3D"http://testimlib.pl" rel=3D"noreferrer" target=
=3D"_blank">testimlib.pl</a> line 10.<br>
<br>
the load() method seems to no longer recognize the file types to decode<br>
them.=C2=A0 It is very fustrating.=C2=A0 I looked at the code in<br>
<br>
/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux-thread-multi/Image/Imlib=
2.pm<br>
<br>
I can&#39;t even see the method load or where it might be inherited from<br=
>
<br>
package Image::Imlib2;<br>
<br>
use strict;<br>
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);<br>
<br>
require Exporter;<br>
require DynaLoader;<br>
<br>
@ISA =3D qw(Exporter DynaLoader);<br>
<br>
# Items to export into callers namespace by default. Note: do not export<br=
>
# names by default without a very good reason. Use EXPORT_OK instead.<br>
# Do not simply export all your public functions/methods/constants.<br>
@EXPORT =3D qw(<br>
=C2=A0 =C2=A0 TEXT_TO_RIGHT<br>
=C2=A0 =C2=A0 TEXT_TO_LEFT<br>
=C2=A0 =C2=A0 TEXT_TO_UP<br>
=C2=A0 =C2=A0 TEXT_TO_DOWN<br>
=C2=A0 =C2=A0 TEXT_TO_ANGLE<br>
);<br>
$VERSION =3D &#39;2.03&#39;;<br>
<br>
bootstrap Image::Imlib2 $VERSION;<br>
<br>
Image::Imlib2-&gt;set_cache_size(0);<br>
<br>
sub new_transparent {<br>
=C2=A0 =C2=A0 my ( $pkg, $x, $y ) =3D @_;<br>
=C2=A0 =C2=A0 my $pixel =3D pack( &#39;CCCC&#39;, 0, 0, 0, 0 );=C2=A0 =C2=
=A0 # ARGB<br>
=C2=A0 =C2=A0 return Image::Imlib2-&gt;new_using_data( $x, $y, $pixel x ( $=
x * $y ) );<br>
}<br>
<br>
sub new_using_data {<br>
=C2=A0 =C2=A0 my ( $pkg, $x, $y, $data ) =3D @_;<br>
=C2=A0 =C2=A0 if ( defined $data &amp;&amp; 4 * $x * $y =3D=3D length $data=
 ) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 return $pkg-&gt;_new_using_data( $x, $y, $data =
);<br>
=C2=A0 =C2=A0 } else {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 return undef;<br>
=C2=A0 =C2=A0 }<br>
}<br>
<br>
sub autocrop {<br>
=C2=A0 =C2=A0 my $image =3D shift;<br>
=C2=A0 =C2=A0 my ( $x, $y, $w, $h ) =3D $image-&gt;autocrop_dimensions;<br>
=C2=A0 =C2=A0 return $image-&gt;crop( $x, $y, $w, $h );<br>
}<br>
<br>
1;<br>
<br>
<br>
<br>
It is not that large really.<br>
<br>
I do find it in the source code for the module in the C library<br>
<br>
[ruben@www3 Image]$ pwd<br>
/home/ruben/.cpan/build/Image-Imlib2-2.03-6/lib/Image<br>
[ruben@www3 Image]$<br>
[ruben@www3 Image]$ grep load ./*<br>
./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load); /* prototype to pass<br>
-Wmissing-prototypes */<br>
./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load)<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 image =
=3D imlib_load_image_with_error_return<br>
(filename, &amp;err);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 P=
erl_croak(aTHX_ &quot;Image::Imlib2 load error:<br>
File does not exist&quot;);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 P=
erl_croak(aTHX_ &quot;Image::Imlib2 load error:<br>
File is directory&quot;);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 P=
erl_croak(aTHX_ &quot;Image::Imlib2 load error:<br>
Permission denied&quot;);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 P=
erl_croak(aTHX_ &quot;Image::Imlib2 load error:<br>
No loader for file format&quot;);<br>
./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load_font); /* prototype to pass<br>
-Wmissing-prototypes */<br>
./Imlib2.c:XS_EUPXS(XS_Image__Imlib2_load_font)<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0&quot;Image::Imlib2::load_font&quot;,<br>
./Imlib2.c:=C2=A0 =C2=A0 font =3D imlib_load_font(fontname);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 (void)newXSproto_portable(&quot;Imag=
e::Imlib2::load&quot;,<br>
XS_Image__Imlib2_load, file, &quot;$$&quot;);<br>
./Imlib2.c:=C2=A0 =C2=A0 =C2=A0 =C2=A0 (void)newXSproto_portable(&quot;Imag=
e::Imlib2::load_font&quot;,<br>
XS_Image__Imlib2_load_font, file,<br>
<br>
I really need to fix this :(<br>
<br>
I would appreciate any help I can get. I never put a C program in perl<br>
code I don&#39;t even see how it inherited the load method or any<br>
constructor for image types.<br>
<br>
<br>
Seems in some source it has this =3D=3D&gt;<br>
=C2=A0CODE:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Imlib_Image image;<=
br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Imlib_Load_Error er=
r;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 image =3D imlib_loa=
d_image_with_error_return (filename, &amp;err);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err =3D=3D IMLI=
B_LOAD_ERROR_FILE_DOES_NOT_EXIST) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Perl_croak(a=
THX_ &quot;Image::Imlib2 load error: File does<br>
not exist&quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err =3D=3D IMLI=
B_LOAD_ERROR_FILE_IS_DIRECTORY) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Perl_croak(a=
THX_ &quot;Image::Imlib2 load error: File is<br>
directory&quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err =3D=3D IMLI=
B_LOAD_ERROR_PERMISSION_DENIED_TO_READ) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Perl_croak(a=
THX_ &quot;Image::Imlib2 load error: Permission<br>
denied&quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (err =3D=3D IMLI=
B_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT) {<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Perl_croak(a=
THX_ &quot;Image::Imlib2 load error: No loader<br>
for file format&quot;);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 RETVAL =3D image;<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
<br>
<a href=3D"https://metacpan.org/release/LBROCARD/Image-Imlib2-2.03/source/l=
ib/Image/Imlib2.xs#L156" rel=3D"noreferrer" target=3D"_blank">https://metac=
pan.org/release/LBROCARD/Image-Imlib2-2.03/source/lib/Image/Imlib2.xs#L156<=
/a><br>
<br>
<br>
Not sure how this is even called by the module.=C2=A0 It is not an ISA<br>
<br>
this line seems to be the black hole for me<br>
=C2=A0image =3D imlib_load_image_with_error_return (filename, &amp;err);<br=
>
<br>
-- <br>
So many immigrant groups have swept through our town<br>
that Brooklyn, like Atlantis, reaches mythological<br>
proportions in the mind of the world - RI Safir 1998<br>
<a href=3D"http://www.mrbrklyn.com" rel=3D"noreferrer" target=3D"_blank">ht=
tp://www.mrbrklyn.com</a><br>
DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002<br>
<br>
<a href=3D"http://www.nylxs.com" rel=3D"noreferrer" target=3D"_blank">http:=
//www.nylxs.com</a> - Leadership Development in Free Software<br>
<a href=3D"http://www.brooklyn-living.com" rel=3D"noreferrer" target=3D"_bl=
ank">http://www.brooklyn-living.com</a><br>
<br>
Being so tracked is for FARM ANIMALS and extermination camps,<br>
but incompatible with living as a free human being. -RI Safir 2013<br>
</blockquote></div>

--000000000000fc9f480631681470--