Re: resize pictures received by mailserver
On 13/06/12 12:45, Randall wrote:
> hi all,
>
> have a question, not really debian specific, but looking for the tools
> available in debian to do the job.
>
> as follows:
>
> i'm trying to set up a private synchronised mailinglist/forum.
> (thinking of a combination of mailman and tiki forum) and i want to
> avoid having huge pictures showing up on the mailinglist/forum, since
> most receivers have slow connections with huge latency etc...
>
> one option would be to set a restriction on received sizes and do some
> training of the users sending the mails and the harmonizing the mail
> clients used etc....
> but nowadys everybody uses different mobile devices etc.. to take and
> send the pictures.
>
> taking this approach will turn me into a hated drill sergeant... not my
> favorite job..
>
>
> so i figured there should be a way of less social resistance and more
> user comfort.
>
> is it possible to have all messages received by the mailinglists MTA
> scanned for pictures and have these automatically scaled to a default
> size before its being redistributed to the receivers on the mailinglist
> and subsequently the forum.
>
>
> my idea was that it could basically follow the same route as spam/virus
> scanners, but i can't seem to find any available tools for this, never
> came across it by accident or my googling skills are lacking.
>
> anybody a hint?
>
> much obliged
>
I use a combination of cjpeg, djpeg, and pnmscale to handle this.
Here is a snippet of PHP. Excuse the wrapping.
if ( !move_uploaded_file( $file['tmp_name'], $filename.".jpg" ) )
trigger_error( "Possible file upload attack. File ".$file['name'] );
if ( system( "/usr/local/bin/djpeg ".$filename.".jpg > ".$filename.".pnm
2>> ../errlog.txt" ) == "FALSE" )
trigger_error( "failed to decompress ".$filename.".jpg" );
if ( system( "/usr/local/bin/pnmscale -xysize 110 140 ".$filename.".pnm
> ".$filename."1.pnm 2>> ../errlog.txt" ) == "FALSE" )
trigger_error( "failed to scale ".$filename.".pnm" );
if ( system( "/usr/local/bin/cjpeg -smooth 10 -qual 50
".$filename."1.pnm > ./images/users/".$userid.".jpg 2>> ../errlog.txt" )
== "FALSE" )
trigger_error( "failed to compress ".$filename."1.pnm" );
--
Tony van der Hoff | mailto:tony@vanderhoff.org
Ariège, France |
Reply to: