<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>imagemagick &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/imagemagick/</link>
	<description>Feed of posts on WordPress.com tagged "imagemagick"</description>
	<pubDate>Wed, 23 Dec 2009 23:08:34 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Tone Mapping with Enfuse]]></title>
<link>http://cbompart.wordpress.com/2009/12/01/tone-mapping-with-enfuse/</link>
<pubDate>Tue, 01 Dec 2009 10:16:24 +0000</pubDate>
<dc:creator>cedricbompart</dc:creator>
<guid>http://cbompart.wordpress.com/2009/12/01/tone-mapping-with-enfuse/</guid>
<description><![CDATA[The previous article was about producing an image free of noise, now we can apply a tone mapping [1]]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The previous article was about producing an image free of noise, now we can apply a tone mapping [1]. I&#8217;m going to use <a href="http://enblend.sourceforge.net">Enfuse</a> to generate a natural HDR/LDR image.</p>
<p><a href="http://cbompart.wordpress.com/files/2009/11/hdr1_fon.png"><img src="http://cbompart.wordpress.com/files/2009/11/hdr1_fon.png?w=150" alt="" title="hdr1 free of noise with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-38" /></a></p>
<p></br><br />
Due to the nature of the image produced by the Noise Suppression technique, we can generate over-exposed images (1EV 2EV 3EV 4EV) without any quality issues. Then we are going to feed the resultant images (with a gamma 2.2 applied) to <em>Enfuse</em>.</p>
<pre class="brush: bash; toolbar: false;">convert ${min_ev_name}_fon.tiff -alpha off -gamma 2.2 ${min_ev_name}_tone_a.tiff
letters=( a b c d e f g h i j k l m n o p q r s t u v w x y z )
counter=1
while true; do
  exp=`echo &#34;2^${counter}&#34; &#124; bc`
  if [ &#34;${exp}&#34; -gt &#34;${max_exp}&#34; ]; then
     break
  fi
  convert ${min_ev_name}_fon.tiff -alpha off -evaluate multiply ${exp} -gamma 2.2 ${min_ev_name}_tone_${letters[${counter}]}.tiff
  let counter=${counter}+1
done
convert ${min_ev_name}_fon.tiff -alpha off -evaluate multiply ${max_exp} -gamma 2.2 ${min_ev_name}_tone_${letters[${counter}]}.tiff
tone_files=`ls ${min_ev_name}_tone_*.tiff`
enfuse -v -o ${min_ev_name}_tm.tiff ${tone_files}</pre>
<p></br><br />
<em>Enfuse</em> generates internally the following merging masks.</p>
<table>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/11/softmask-1.png"><img src="http://cbompart.wordpress.com/files/2009/11/softmask-1.png?w=150" alt="" width="150" height="99" class="alignnone size-thumbnail wp-image-47" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/softmask-2.png"><img src="http://cbompart.wordpress.com/files/2009/11/softmask-2.png?w=150" alt="" width="150" height="99" class="alignnone size-thumbnail wp-image-48" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/softmask-3.png"><img src="http://cbompart.wordpress.com/files/2009/11/softmask-3.png?w=150" alt="" width="150" height="99" class="alignnone size-thumbnail wp-image-49" /></a></td>
</tr>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/11/softmask-4.png"><img src="http://cbompart.wordpress.com/files/2009/11/softmask-4.png?w=150" alt="" width="150" height="99" class="alignnone size-thumbnail wp-image-50" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/softmask-5.png"><img src="http://cbompart.wordpress.com/files/2009/11/softmask-5.png?w=150" alt="" width="150" height="99" class="alignnone size-thumbnail wp-image-51" /></a></td>
</tr>
<table>
<p></br><br />
Finally <em>Enfuse</em> produces a natural looking image.</p>
<p><a href="http://cbompart.wordpress.com/files/2009/11/hdr1_tm.png"><img src="http://cbompart.wordpress.com/files/2009/11/hdr1_tm.png?w=150" alt="" title="hdr1 tone mapping" width="150" height="99" class="alignnone size-thumbnail wp-image-54" /></a></p>
<p></br><br />
Additionally we can process the image a little bit further by applying contrast and saturation to the HDR/LDR image. I&#8217;m using a sigmoidal contrast curve of 2&#215;50% and a 30% increase of saturation.</p>
<pre class="brush: bash; toolbar: false;">convert ${min_ev_name}_tm.tiff -sigmoidal-contrast 2x50% -modulate 100,130,100 ${min_ev_name}_final.tiff</pre>
<p><a href="http://cbompart.wordpress.com/files/2009/11/hdr1_final.png"><img src="http://cbompart.wordpress.com/files/2009/11/hdr1_final.png?w=150" alt="" title="hdr1 final" width="150" height="99" class="alignnone size-thumbnail wp-image-55" /></a></p>
<p></br><br />
&#8212;<br />
[1] Guillermo Lujik &#8211; <a href="http://www.guillermoluijk.com/tutorial/hdr/index.htm">HDR TONE MAPPING</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Noise Suppression with ImageMagick]]></title>
<link>http://cbompart.wordpress.com/2009/12/01/noise-suppression-with-imagemagick/</link>
<pubDate>Tue, 01 Dec 2009 10:01:28 +0000</pubDate>
<dc:creator>cedricbompart</dc:creator>
<guid>http://cbompart.wordpress.com/2009/12/01/noise-suppression-with-imagemagick/</guid>
<description><![CDATA[This post is a tribute to Guillermo Luijk&#8217;s Zero Noise technique [1]. To replicate this proces]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>This post is a tribute to <a title="Guillermo Lujik" href="http://www.guillermoluijk.com" target="_blank">Guillermo Luijk</a>&#8217;s Zero Noise technique [1].</strong></p>
<p>To replicate this process under Linux, I&#8217;m using <em>dcraw</em> and <a href="http://www.imagemagick.org">ImageMagick</a>. To compare apple to apple, I&#8217;ve used the photos from Guillermo&#8217;s article.</p>
<p>The aim of this technique is to replace noisy pixels from the original image (0EV) with the pixels from the other over-exposed images. Therefore you need to take a number of catches with 2EV apart (e.g: 0EV +2EV +4EV) using a tripod. The reference image is the 0EV catch and that&#8217;s where the technique will apply.</p>
<p>The first step is to convert the raw files to linear TIFF (16bits) using the sRGB colorspace with for example an automatic white balance.</p>
<pre class="brush: bash; toolbar: false;">max_ev=`ls -1 *.cr2 &#124; tail -n 1`
max_ev_name=`echo ${max_ev} &#124; cut -d '.' -f1`
dcraw -v a -W -o 1 -q 3 -4 -T -c ${max_ev} &#62; ${max_ev_name}.tiff 2&#62; dcraw.log
cat dcraw.log
rgbg=`grep 'multipliers' dcraw.log &#124; cut -d ' ' -f2,3,4,5`
rm dcraw.log
for other in $( ls -r *.cr2 ); do
  if [ ${other} != ${max_ev} ]; then
    dcraw -v -r $rgbg -W -o $color -q 3 -4 -T ${other}
  fi
done</pre>
<table>
<tbody>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/11/hdr11.png"><img class="alignnone size-thumbnail wp-image-30" title="hdr1 with gamma 2.2" src="http://cbompart.wordpress.com/files/2009/11/hdr11.png?w=150" alt="" width="150" height="99" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/hdr2.png"><img class="alignnone size-thumbnail wp-image-29" title="hdr2 with gamma 2.2" src="http://cbompart.wordpress.com/files/2009/11/hdr2.png?w=150" alt="" width="150" height="99" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/hdr3.png"><img class="alignnone size-thumbnail wp-image-31" title="hdr3 with gamma 2.2" src="http://cbompart.wordpress.com/files/2009/11/hdr3.png?w=150" alt="" width="150" height="99" /></a></td>
</tr>
</tbody>
</table>
<p></br><br />
Second step is to create the merging masks (2 masks for 3 catches). A mask is produced from the negate of over-exposed image which is copied into the alpha channel [2] of the corrected version of the over-exposed image. For example, the corrected version of the +2EV image is 0EV.<br />
To generate the corrected images, I&#8217;ve wrote a little program (based on Guillermo&#8217;s algorithm) using the ImageMagick C++ API. The program prints the exposure difference between 2 images.</p>
<pre class="brush: cpp; collapse: true; light: false; toolbar: true;">#include &#60;stdio.h&#62;
#include &#60;stdlib.h&#62;
#include &#60;math.h&#62;
#include &#60;wand/MagickWand.h&#62;

int main(int argc,char **argv) {
  MagickBooleanType status;
  MagickPixelPacket pixel1, pixel2;
  MagickWand *image1, *image2;
  PixelIterator *iterator1, *iterator2;
  PixelWand **pixels1, **pixels2;

  long y;
  register long x;
  unsigned long width;

  double min = 65536 / pow(2, 6);
  double max = 65536 * 0.9;
  double sum1 = 0, sum2 = 0;

  if (argc != 3) {
      fprintf(stdout, &#34;Usage: %s normal-image over-exposed-image\n&#34;, argv[0]);
      exit(0);
  }

  MagickWandGenesis();
  image1 = NewMagickWand();
  status = MagickReadImage(image1, argv[1]);
  if (status == MagickFalse) {
    return -1;
  }
  image2 = NewMagickWand();
  status = MagickReadImage(image2, argv[2]);
  if (status == MagickFalse) {
    return -1;
  }

  iterator1 = NewPixelIterator(image1);
  iterator2 = NewPixelIterator(image2);
  if ((iterator1 == (PixelIterator *) NULL) &#124;&#124; (iterator2 == (PixelIterator *) NULL)) {
    return -1;
  }
  for (y=0; y &#60; (long) MagickGetImageHeight(image1); y++) {
    pixels1 = PixelGetNextIteratorRow(iterator1, &#38;width);
    pixels2 = PixelGetNextIteratorRow(iterator2, &#38;width);
    if ((pixels1 == (PixelWand **) NULL) &#124;&#124; (pixels2 == (PixelWand **) NULL)) {
      break;
    }
    for (x=0; x &#60; (long) width; x++) {
      PixelGetMagickColor(pixels1[x], &#38;pixel1);
      PixelGetMagickColor(pixels2[x], &#38;pixel2);
      if ((pixel1.red &#62;= min) &#38;&#38; (pixel1.red &#60;= max) &#38;&#38; (pixel2.red &#62;= min) &#38;&#38; (pixel2.red &#60;= max)) {
         sum1 += pixel1.red;
         sum2 += pixel2.red;
      }
      if ((pixel1.green &#62;= min) &#38;&#38; (pixel1.green &#60;= max) &#38;&#38; (pixel2.green &#62;= min) &#38;&#38; (pixel2.green &#60;= max)) {
         sum1 += pixel1.green;
         sum2 += pixel2.green;
      }
      if ((pixel1.blue &#62;= min) &#38;&#38; (pixel1.blue &#60;= max) &#38;&#38; (pixel2.blue &#62;= min) &#38;&#38; (pixel2.blue &#60;= max)) {
         sum1 += pixel1.blue;
         sum2 += pixel2.blue;
      }
    }
  }
  if (y &#60; (long) MagickGetImageHeight(image1)) {

    return -1;
  }
  iterator1 = DestroyPixelIterator(iterator1);
  image1 = DestroyMagickWand(image1);
  iterator2 = DestroyPixelIterator(iterator2);
  image2 = DestroyMagickWand(image2);
  MagickWandTerminus();

  printf(&#34;%.100g\n&#34;, sum1/sum2);
  return(0);
}</pre>
<pre class="brush: bash; toolbar: false;">min_ev=`ls -1r *.tiff &#124; tail -n 1`
for ev in $( ls *.tiff ); do
  if [ ${ev} != ${min_ev} ]; then
    ev_name=`echo ${ev} &#124; cut -d '.' -f1`
    ec=`exposure ${min_ev} ${ev}`
    convert ${ev} -evaluate multiply $ec ${ev_name}_corrected.tiff
    composite -compose CopyOpacity \( ${ev} -negate \) ${ev_name}_corrected.tiff ${ev_name}_mask.tiff
  fi
done</pre>
<table>
<tbody>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr2_negate.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr2_negate.png?w=150" alt="" title="hdr2 negate" width="150" height="99" class="alignnone size-thumbnail wp-image-85" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr2_corrected1.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr2_corrected1.png?w=150" alt="" title="hdr2 corrected with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-88" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr2_mask.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr2_mask.png?w=150" alt="" title="hdr2 mask with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-92" /></a></td>
</tr>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr3_negate.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr3_negate.png?w=150" alt="" title="hdr3 negate" width="150" height="99" class="alignnone size-thumbnail wp-image-86" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr3_corrected.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr3_corrected.png?w=150" alt="" title="hdr3 corrected with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-89" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/12/hdr3_mask.png"><img src="http://cbompart.wordpress.com/files/2009/12/hdr3_mask.png?w=150" alt="" title="hdr3 mask with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-93" /></a></td>
</tr>
</tbody>
</table>
<p></br><br />
To get the final image, we need to merge the masks together and overlay the mask to the first image.</p>
<pre class="brush: bash; toolbar: false;">mask_files=`ls -r *_mask.tiff`
nb_mask=`ls  -r *_mask.tiff &#124; wc -l`
if [[ $( echo &#34;$nb_mask == 1.00&#34; &#124; bc ) == &#34;1&#34; ]]; then
  mv $mask_files final_mask.tiff
else
  composite ${mask_files} final_mask.tiff
fi
min_ev_name=`echo ${min_ev} &#124; cut -d '.' -f1`
composite final_mask.tiff ${min_ev} ${min_ev_name}_fon.tiff</pre>
<table>
<tr>
<td><a href="http://cbompart.wordpress.com/files/2009/12/final_mask.png"><img src="http://cbompart.wordpress.com/files/2009/12/final_mask.png?w=150" alt="" title="final mask with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-97" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/hdr11.png"><img src="http://cbompart.wordpress.com/files/2009/11/hdr11.png?w=150" alt="" title="hdr1 with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-30" /></a></td>
<td><a href="http://cbompart.wordpress.com/files/2009/11/hdr1_fon.png"><img src="http://cbompart.wordpress.com/files/2009/11/hdr1_fon.png?w=150" alt="" title="hdr1 free of noise with gamma 2.2" width="150" height="99" class="alignnone size-thumbnail wp-image-38" /></a></td>
</tr>
</table>
<p></br><br />
Here is the final <em>bash</em> script which takes in argument a folder with a number of catches. With the <strong>-c</strong> option, you can compile the latest <em>dcraw</em> and the <em>exposure</em> program (you need the ImageMagick development package). The script requires the following tools: bash, cut, tail, grep, bc, wget, gcc and ImageMagick Q16.</p>
<pre class="brush: bash; collapse: true; light: false; toolbar: true;">#!/bin/bash
compile=
color=1
wb=-w
ext=dng

while getopts 'w:e:c' OPTION
  do
    case $OPTION in
      w)      wb=-&#34;$OPTARG&#34;
               ;;
      e)      ext=&#34;$OPTARG&#34;
               ;;
      c)      compile=1
               ;;
      ?)      printf &#34;Usage: %s: [-w {dcraw white balance: a&#124;w}] [-e {file extension}] [-c compile] {folder}\n&#34; $(basename $0) &#62;&#38;2
               exit 2
               ;;
      esac
      done
shift $(($OPTIND - 1))

if [ -z $1 ]; then
  printf &#34;Usage: %s: [-w {dcraw white balance: a&#124;w}] [-e {file extension}] [-c compile] {folder}\n&#34; $(basename $0) &#62;&#38;2
  exit 2;
fi

if [ &#34;$compile&#34; ]; then
  echo &#34;--- compile dcraw&#34;
  wget http://cybercom.net/~dcoffin/dcraw/dcraw.c
  gcc -o dcraw -O4 dcraw.c -lm -ljpeg -llcms
  rm dcraw.c
  echo &#34;--- compile exposure&#34;
  gcc `Magick-config --cflags --cppflags` -o exposure exposure.c `Magick-config --ldflags --libs`
fi

echo &#34;--- process folder=${1}&#34;
cd ${1}
rm *.tiff

echo &#34;--- convert raw to tiff&#34;
max_ev=`ls -1 *.${ext} &#124; tail -n 1`
max_ev_name=`echo ${max_ev} &#124; cut -d '.' -f1`
../dcraw -v $wb -W -o $color -q 3 -4 -T -c ${max_ev} &#62; ${max_ev_name}.tiff 2&#62; dcraw.log
cat dcraw.log
rgbg=`grep 'multipliers' dcraw.log &#124; cut -d ' ' -f2,3,4,5`
rm dcraw.log
for other in $( ls -r *.${ext} ); do
  if [ ${other} != ${max_ev} ]; then
    ../dcraw -v -r $rgbg -W -o $color -q 3 -4 -T ${other}
  fi
done

min_ev=`ls -1r *.tiff &#124; tail -n 1`
max_exp=0
for ev in $( ls *.tiff ); do
  if [ ${ev} != ${min_ev} ]; then
    ev_name=`echo ${ev} &#124; cut -d '.' -f1`
    echo -n &#34;--- calculate negative exposure between ${min_ev} and ${ev}=&#34;
    ec=`../exposure ${min_ev} ${ev}`
    echo $ec
    max_exp=`echo &#34;1/$ec&#34; &#124; bc`
    echo &#34;--- create a mask for ${ev}&#34;
    convert ${ev} -evaluate multiply $ec ${ev_name}_corrected.tiff
    composite -compose CopyOpacity \( ${ev} -negate \) ${ev_name}_corrected.tiff ${ev_name}_mask.tiff
  fi
done

echo &#34;--- merge the masks&#34;
mask_files=`ls -r *_mask.tiff`
nb_mask=`ls  -r *_mask.tiff &#124; wc -l`
if [[ $( echo &#34;$nb_mask == 1.00&#34; &#124; bc ) == &#34;1&#34; ]]; then
  mv $mask_files final_mask.tiff
else
  composite ${mask_files} final_mask.tiff
fi

echo &#34;--- overlay the mask with ${min_ev}&#34;
min_ev_name=`echo ${min_ev} &#124; cut -d '.' -f1`
composite final_mask.tiff ${min_ev} ${min_ev_name}_fon.tiff

rm *_mask.tiff *_corrected.tiff</pre>
<p></br><br />
&#8212;<br />
[1] Guillermo Lujik &#8211; <a href="http://www.guillermoluijk.com/tutorial/zeronoise/index.htm">ZERO NOISE</a><br />
[2] ImageMagick &#8211; <a href="http://www.imagemagick.org/Usage/compose/#copyopacity">Copy Opacity</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Imagemagick, práca s adresárom]]></title>
<link>http://uzivatel.wordpress.com/2009/11/28/imagemagick-praca-s-adresarom/</link>
<pubDate>Sat, 28 Nov 2009 08:23:11 +0000</pubDate>
<dc:creator>uzivatel</dc:creator>
<guid>http://uzivatel.wordpress.com/2009/11/28/imagemagick-praca-s-adresarom/</guid>
<description><![CDATA[Len malý hint na spracovanie celého adresára find . -iname "*.jpg" | xargs -l -i convert -quality 75]]></description>
<content:encoded><![CDATA[Len malý hint na spracovanie celého adresára find . -iname "*.jpg" | xargs -l -i convert -quality 75]]></content:encoded>
</item>
<item>
<title><![CDATA[Installing RMagick on Ubuntu]]></title>
<link>http://rorworld.wordpress.com/2009/11/23/installing-rmagick-on-ubuntu/</link>
<pubDate>Mon, 23 Nov 2009 08:09:59 +0000</pubDate>
<dc:creator>jacobvthomas</dc:creator>
<guid>http://rorworld.wordpress.com/2009/11/23/installing-rmagick-on-ubuntu/</guid>
<description><![CDATA[I have followed the below steps to install RMagick on Ubuntu 9.04 - the Jaunty Jackalope As Root via]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I have followed the below steps to install RMagick on Ubuntu 9.04 - the Jaunty Jackalope</p>
<p>As Root via terminal</p>
<blockquote><p>1) <strong>apt-get install imagemagick</strong></p>
<p>2)<strong> gem install rmagick</strong></p></blockquote>
<p>It was a failure I was stucked with the below error.</p>
<blockquote>
<div id="_mcePaste"><em>gem install rmagick</em></div>
<div id="_mcePaste"><em>Building native extensions.  This could take a while&#8230;</em></div>
<div id="_mcePaste"><em>ERROR:  Error installing rmagick:</em></div>
<div id="_mcePaste"><em>ERROR: Failed to build gem native extension.</em></div>
<div id="_mcePaste"><em>/usr/bin/ruby1.8 extconf.rb install rmagick</em></div>
<div id="_mcePaste"><em>checking for Ruby version &#62;= 1.8.5&#8230; yes</em></div>
<div id="_mcePaste"><em>checking for cc&#8230; yes</em></div>
<div id="_mcePaste"><strong><em>checking for Magick-config&#8230; no</em></strong></div>
<div id="_mcePaste"><em>Can&#8217;t install RMagick 2.12.2. Can&#8217;t find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</em></div>
<div id="_mcePaste"><em>*** extconf.rb failed ***</em></div>
<div id="_mcePaste"><em>Could not create Makefile due to some reason, probably lack of</em></div>
<div id="_mcePaste"><em>necessary libraries and/or headers.  Check the mkmf.log file for more</em></div>
<div id="_mcePaste"><em>details.  You may need configuration options.</em></div>
<div id="_mcePaste"><em>Provided configuration options:</em></div>
<div id="_mcePaste"><em>&#8211;with-opt-dir</em></div>
<div id="_mcePaste"><em>&#8211;without-opt-dir</em></div>
<div id="_mcePaste"><em>&#8211;with-opt-include</em></div>
<div id="_mcePaste"><em>&#8211;without-opt-include=${opt-dir}/include</em></div>
<div id="_mcePaste"><em>&#8211;with-opt-lib</em></div>
<div id="_mcePaste"><em>&#8211;without-opt-lib=${opt-dir}/lib</em></div>
<div id="_mcePaste"><em>&#8211;with-make-prog</em></div>
<div id="_mcePaste"><em>&#8211;without-make-prog</em></div>
<div id="_mcePaste"><em>&#8211;srcdir=.</em></div>
<div id="_mcePaste"><em>&#8211;curdir</em></div>
<div id="_mcePaste"><em>&#8211;ruby=/usr/bin/ruby1.8</em></div>
<div id="_mcePaste"><em>Gem files will remain installed in /var/lib/gems/1.8/gems/rmagick-2.12.2 for inspection.</em></div>
<div id="_mcePaste"><em>Results logged to /var/lib/gems/1.8/gems/rmagick-2.12.2/ext/RMagick/gem_make.out</em></div>
</blockquote>
<p>The Highlighted error was because of missing libraries and when i have googled the error I got a prompt solution to solve it by installing libmagick9-dev</p>
<p>but when i tried installing it also failed</p>
<blockquote><p><em>&#8220;apt-get install libmagick9-dev</em></p>
<p><em>Reading package lists&#8230; Done</em></p>
<p><em>Building dependency tree </em></p>
<p><em>Reading state information&#8230; Done</em></p>
<p><em>Package libmagick9-dev is a virtual package provided by:</em></p>
<p><em> libmagickwand-dev 7:6.4.5.4.dfsg1-1ubuntu3.1</em></p>
<p><em>You should explicitly select one to install.</em></p>
<p><em>E: Package libmagick9-dev has no installation candidate&#8221;</em></p></blockquote>
<p>It was solved by Installing &#8220;libmagickwand-dev&#8221;</p>
<div>
<blockquote>
<div><strong>3) apt-get install libmagickwand-dev</strong></div>
</blockquote>
</div>
<blockquote>
<div><strong>4) gem install rmagick</strong></div>
</blockquote>
<div>Thats it. rmagick is installed successfully. Hope this helps&#8230;</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Menggabungkan File-File PNG ke Sebuah File PDF ]]></title>
<link>http://ingafety.wordpress.com/2009/11/19/menggabungkan-file-file-png-ke-sebuah-file-pdf/</link>
<pubDate>Thu, 19 Nov 2009 09:11:03 +0000</pubDate>
<dc:creator>fety</dc:creator>
<guid>http://ingafety.wordpress.com/2009/11/19/menggabungkan-file-file-png-ke-sebuah-file-pdf/</guid>
<description><![CDATA[Saya sedang mengolah data harian medan magnetik untuk memonitoring keberadaan anomali-anomali medan ]]></description>
<content:encoded><![CDATA[Saya sedang mengolah data harian medan magnetik untuk memonitoring keberadaan anomali-anomali medan ]]></content:encoded>
</item>
<item>
<title><![CDATA[Converting multiple JPG to PDF]]></title>
<link>http://primalcortex.wordpress.com/2009/11/18/converting-multiple-jpg-to-pdf/</link>
<pubDate>Wed, 18 Nov 2009 19:39:43 +0000</pubDate>
<dc:creator>primalcortex</dc:creator>
<guid>http://primalcortex.wordpress.com/2009/11/18/converting-multiple-jpg-to-pdf/</guid>
<description><![CDATA[Using Imagemagick it is easy, just do: convert *.jpg output.pdf The problem is that my scanned files]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Using Imagemagick it is easy, just do: <strong>convert *.jpg output.pdf</strong></p>
<p>The problem<strong> </strong>is that my scanned files and using version 6.5.1 of Imagemagick on Kubuntu just gives me a Segmentation Fault error, and no valid pdf.</p>
<p>Well at least this way it works: <strong>convert *.jpeg -compress Zip output.pdf</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ещё несколько слов об imagemagick]]></title>
<link>http://rostoteka.wordpress.com/2009/11/04/139/</link>
<pubDate>Wed, 04 Nov 2009 09:29:15 +0000</pubDate>
<dc:creator>rostoteka</dc:creator>
<guid>http://rostoteka.wordpress.com/2009/11/04/139/</guid>
<description><![CDATA[Часто требуется не просто обработать или улучшить изображение, но применить последовательность опера]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Часто требуется не просто обработать или улучшить изображение, но применить последовательность операций к большому количеству изображений. В этом нам поможет консольный графический редактор ImageMagick. Подробности под катом <!--more--></p>
<p><big>Установка и первые шаги</big><br />
Устанавливается черзвычайно просто:</p>
<blockquote><p>apt-get install imagemagick</p></blockquote>
<p>и всё. Но дальше меня лично ждал сюрприз: а где, собственно, программа? На самом деле этот пакет содержит несколько программ: <strong>display, animate, identify, convert,   montage, mogrify и composite</strong>. Здесь я приведу свой скромный опыт работы с основной программой пакета &#8211; всемогущей <strong>convert</strong>.</p>
<p>С пакетом ImageMagick (во всяком случае в Дебиане) поставляется могучий мануал в PDF на 320 страницах &#8211; весьма толковое руководство, но на английском. До его завершения весьма далеко: описаны только опции командной строки, а остальное просто набросано.</p>
<p><big><strong>Консольный графический редактор</strong></big><br />
У многих моих подоконных товарищей такое словосочетание вызывает когнитивный диссонанс: как <em>графический</em> редактор может быть консольным!? Может, и бывает чрезвычайно полезен, когда нужно обработать не одно, а множество изображений, лежащих к тому же в разных каталогах. Естественно, в альтернативной среде приняты наиболее топорные средства решения проблем: тыкать и выделять мышкой, и для каждого файла повторять процедуру. Самые продвинутые слышали об Action в фотошопе, но и это средство &#8211; не панацея (а кроме того, требует немалого времени на отладку комбинации действий).</p>
<p>Ниже &#8211; часть используемых мной команд обработки изображений, разбитых по категориям (насколько это возможно).</p>
<p><big>Операции с цветом</big><br />
Имеется в виду изменение цветовых пространств: RGB/CMYK, grayscale и BW. Всё, что связано с изменением цветов.</p>
<p>Перевод в оттенки серого<br />
<strong>-colorspace GRAY</strong></p>
<blockquote><p><em>Например: convert -colorspace GRAY tux.jpg tuxConvertGray.jpg</em></p></blockquote>
<p>На самом деле ключ colorspace позволяет переводить изображения между разными цветовыми пространствами: GRAY, OHTA, RGB, Transparent, XYZ, YCbCr, YIQ, YPbPr, YUV или CMYK.</p>
<p>Перевод в чёрно-белое изображение<br />
Здесь есть несколько методов: бинаризация по порогу (threshold), с диффузией ошибки (метод Floyd/Steinberg, error diffusion) и локальный адаптивный порог.</p>
<p><em>Бинаризация с</em> <em>диффузией ошибки</em> выполняется ключом:<br />
<strong>-dither<br />
</strong><strong>-monochrome</strong><br />
Вместе с этой опцией следует применять ключи <em>-colors</em> или <em>-monochrome</em> для определения цветового пространства, к которому применяется преобразование.</p>
<p><em>Бинаризация по порогу</em> делается при помощи ключа:<br />
<strong>-threshold число</strong><br />
где число &#8211; значение порога.</p>
<blockquote><p><em>Пример: convert -threshold 128 1.png 2.png</em></p>
<p><em> </em></p></blockquote>
<p><em>Локальная адаптивная бинаризация по порогу</em> производится при помощи следующего параметра:<em><br />
</em><strong>-lat Ширина</strong>x<strong>Длина{+-}Смещение{%}</strong><br />
Здесь имеется в виду область размером <strong>Ширина</strong>xДлина, в пределах которой происходит порог. Смещение определяет степень отклонения значений пикселей (в процентах). Данные параметры стоит подбирать с визуальным контролем (запустить ещё и просмотрщик изображений).</p>
<blockquote><p><em>Пример: convert -lat 3&#215;3+5% tux.jpg tuxConvertedLat3&#215;3.jpg</em></p></blockquote>
<p>Постеризация<br />
Уменьшение количества цветов на изображении:<br />
<strong>-posterize числооттенков</strong><br />
до <em>числаоттенков приводит</em> к сокращению и &#8220;огрублению&#8221; оттенков изображения.</p>
<p>Инвертирование<br />
Чтобы инвертировать изображение (цветное или полутоновое), надо указать ключ:<br />
<strong>-negate</strong><br />
Действует для цветых и полутоновых изображений.</p>
<p>Изменение разрядности изображения<br />
Чтобы перевести 16-битное изображение в 8-битное, нужно воспользоваться ключом:<br />
<strong>-depth 8</strong><br />
Кто сказал, что в Линукс нельзя работать с 16-битным цветом?</p>
<p><big>Операции с освещённостью</big><br />
Всё, что касается освещённости пикселей, без привязки к цветовому пространству: гамма-коррекция, контрастирование.</p>
<p>Повышение / понижение контраста<br />
<strong>Изменение контрастности изображения достигается:<br />
-contrast</strong><br />
<strong>+contrast</strong><br />
При этом <em>-contrast</em> повышает контрастность, а + понижает.</p>
<blockquote><p><em>Пример:  convert -contrast tux.jpg tuxConvertedContrast-50.jpg</em></p></blockquote>
<p>Эквализация гистограммы<br />
Автоматическое контрастирование изображения:<strong><br />
-equalize</strong><br />
Производит автоматическую эквализацию гистограммы &#8211; алгоритм изменяет гистограмму изображения так, чтобы она была равномерна по светам и теням.</p>
<p>Нормализация<br />
Для того, чтобы значения пикселей изображения занимали весь диапазон, следует указать ключ:<br />
<strong>-normalize</strong><br />
Этим достигается повышение контраста на изображении.</p>
<p>Гамма-коррекция<br />
Для гамма-коррекции изображения следует указать ключ:<strong><br />
-gamma значение</strong><br />
Значения меньшие 1.0 делают изображение темнее, значения более 1.0 осветляют изображение. Наиболее часто применяемые значения лежат в пределах от 0.8 до 2.3<br />
Можно применять разные значения гамма-коррекции для разных цветовых каналов, например так: <em>-gamma 1.7/2.3/1.2</em></p>
<p>Уровни<br />
Более тонкая настройка контрастности изображения при помощи уровней:<br />
<strong>-level точкачёрного{,точкабелого}{%}{,значениегаммакоррекции}<br />
</strong>можно указывать как в абсоютных величинах, например <em>-level 10,65000</em> так и в процентах <em>-level 2%,98%</em><br />
По умолчанию гамма стоит равная 1.0 (то есть без гамма-коррекции), но её можно задать, например, так <em>-level 2%,98%,0.8</em></p>
<p><big><strong>Геометрические преобразования</strong></big><br />
Здесь я приведу несколько полезных команд, которые позволяют менять масштаб изображения или кадрировать его. Безусловно, вслепую определить точные координаты очень сложно, но ведь никто не воспрещает использовать консольные и графические утилиты вместе?</p>
<p>Изменить размер изображения<br />
Можно задать точный размер в пикселях:<strong><br />
-resize MMMxNNN</strong><br />
изменить размер изображения на MMMxNNN. При этом плотность изображения сохраняется изначальной.<br />
Можно задать в процентах:<br />
<strong>-resize 200%<br />
</strong>то есть увелилить в 2 раза.<strong><br />
</strong><br />
Более быстрый, но грубый алгоритм маштабирования:<br />
<strong> -scale число%<br />
</strong>масштабирует изображение в заданном процентном соотношении.</p>
<p>Кадрировать изображение<br />
Для кадрирования изображения следует использовать:<br />
<strong>-crop Ширина</strong>x<strong>Высота</strong>{+-}&#60;<strong>ИсходноеХ</strong>&#62;{+-}&#60;<strong>ИсходноеY</strong>&#62;{%}<strong><br />
</strong>Имеется в виду, что требуется вырезать область <strong>Ширина</strong>х<strong>Высота</strong>, причём область смещена на значение<strong> ИсходноеХ и ИсходноеY</strong> пикселей. Значения двух последних параметров &#8211; на самом деле просто координата левого верхнего угла области, для которой указаны данные ширины и высоты. Описание дано в терминологии GiMP: если там вызвать диалог кадрирования, то станет понятным, что имеется в виду.</p>
<blockquote><p><em>Пример: convert -crop 95&#215;85+50+12 tux.jpg tuxConvertedCrop.jpg</em></p></blockquote>
<p>Изменить плотность изображения<br />
Для того, чтобы задать количество пикселей на дюйм, следует воспользоваться ключом:<br />
<strong>-density DPIгоризонтальное</strong>x<strong>DPIвертикальное<br />
</strong><strong>-density число<br />
</strong>Первый вариант нужен тогда, когда по вертикали и горизонтали разрешение разное. Второй вариант проще: если нужно задать разрешение, одинаковое в обоих направлениях.<strong><br />
</strong></p>
<p>Поворот изображения<br />
Чтобы повернуть изображение, указываем:<strong><br />
-rotate &#8220;+-градусы&#8221;<br />
</strong>Для того, чтобы повернуть изображение по часовой стрелке, пишем <em>-rotate &#8220;+90&#8243;</em> для поворота против часовой стрелки, соответственно <em>-rotate &#8220;-90&#8243;</em><br />
Если поворот производится на произвольное число градусов, то изображение поворачивается как целое, увеличиваясь для вмещения исходной картинки. Появившиеся области становятся цвета фона, который определяется параметром -fill цвет.</p>
<blockquote><p>Несколько слов о заполнении:</p>
<ul>
<li>если надо заполнить цветом по-быстрому и особенно не думать, можно указать именованый цвет (yellow, black, white). Полный их перечень можно получить командой <strong>convert -list color</strong></li>
<li>если заполнять надо точно известным цветом, можно указать его в формате #RGB (R,G,B are hex numbers, 4 bits each)</li>
<li><strong>convert -fill blue &#8230;<br />
convert -fill &#8220;#ddddff&#8221; &#8230;<br />
convert -fill &#8220;rgb(65000,65000,65535)&#8221; &#8230;<br />
</strong></li>
</ul>
<p><strong> </strong></p></blockquote>
<p><big>Фильтры для улучшения изображений</big><br />
Приведены алгоритмы размытия / повышения резкости и шумоподавления.</p>
<p>Размытие по Гауссу<br />
Чтобы размыть изображение по Гауссу:<br />
<strong>-blur Радиус</strong><br />
<strong>-blur РАДИУС</strong>x<strong>СИГМА</strong><br />
Размытие изображения по Гауссу на РАДИУС пикселей. Опционально можно задать степень (стандартное отклонение) &#8211; задав СИГМУ.</p>
<p>Радиальное размытие<br />
Размыть изображение, &#8220;завращав&#8221; его вокруг центра, можно:<br />
<strong>-swirl градус</strong><br />
на заданное количество градусов.</p>
<p>Удаление спекл-шума<br />
Простой метод удаления спекл-шума (мультипликативный шум):<br />
<strong>-despeckle</strong><br />
Действие приводит к лёгкому размытию.</p>
<p>Выделение краёв<br />
Для выделения краёв на изображении следует использовать ключ:<br />
<strong>-edge радиус</strong><br />
Приводит к появлению оконтуренного изображения (по всей видимости, применяется метод Собела).</p>
<p>Увеличение резкости<br />
Для того, чтобы изображение стало более резким, можно применить ключ:<br />
<strong>-sharpen Радиус</strong>x<strong>Сигма</strong><br />
Используется оператор Гаусса, требуется задание радиуса и стандартного отклонения (Сигма)</p>
<p>Медианная фильтрация<br />
Для удаления импульсного шума с изображения следует использовать медианную фильтрацию:<br />
<strong>-median радиус</strong><br />
значение параметра задаёт область оценки шума для алгоритма.</p>
<p>Нечёткая маска<br />
Для повышения резкости изображение, особенно на контурах, можно применить нечёткую маску:<br />
<strong>-unsharp Радиус</strong>x<strong>Сигма</strong>+<strong>величина+порог</strong><br />
Используется оператор Гаусса, которому требуется задать Радиус и Сигму (для достижения хороших результатов радиус должен быть больше сигмы). По умолчанию 0 и 1.0 соответственно.<br />
Параметр <em>величина</em> есть процент разницы между оригинальным и нечётким изображением, умолчание 1.0, а порог &#8211; величина количественной разницы между изображениями (умолчание 0.05).</p>
<blockquote><p>У некоторых пользователей возникает дескрипанс: как же так, типа Unsharp, а повышает резкость? Дело в том, что фильтр получил своё имя потому, что его действие выглядит так, как будто из изображения вычли его нерезкую копию. Никакого вычитания, конечно, не происходит: выполняется свёртка с ядром Гаусса 3х3 пикселей, но это уже другая история.</p></blockquote>
<p>Добавление / удаление шума (по ближайшим соседям)<br />
Шумоподавление выполняется при указании ключа:<br />
<strong>-noise радиус</strong><br />
Удаление шума с изображения на основе анализа величин значений ближайших пикселей в области заданного <strong>радиуса</strong>. Пиксель считается шумовым и заменяется на среднее по области, если и только если значение пикселя является максимумом или минимумом в данной области.</p>
<p>Чтобы добавить шум к изображению, указываем:<br />
<strong>+noise тип</strong><br />
Можно добавить шумы: Uniform (однородный), Gaussian (Гауссов), Multiplicative (спекл-шум), Impulse (импульсный), Laplacian (Лапласов шум), Poisson (шум Пуассона).</p>
<p><a href="http://mydebianblog.blogspot.com/2007/07/imagemagick.html" target="_blank">Взято отсюда &#62;&#62;&#62;</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Image Theft]]></title>
<link>http://adebond.wordpress.com/2009/11/03/image-theft/</link>
<pubDate>Tue, 03 Nov 2009 11:21:10 +0000</pubDate>
<dc:creator>adebond</dc:creator>
<guid>http://adebond.wordpress.com/2009/11/03/image-theft/</guid>
<description><![CDATA[When I first developed an interest in photography just over a year ago, I used to upload the resulti]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><a href="http://www.flickr.com/photos/adebond1/4071723784/?reuploaded=1"><img class="aligncenter size-full wp-image-213" title="Example Of Text Overlay" src="http://adebond.wordpress.com/files/2009/11/2009-11-01-151.jpg" alt="Example Of Text Overlay" width="497" height="279" /></a></p>
<p>When I first developed an interest in photography just over a year ago, I used to upload the resulting full resolution images directly onto my <a href="http://www.flickr.com/photos/adebond1/">Flickr photostream</a>. At the time I didn&#8217;t really have a grasp of what was meant by the terms copyright, licensing or creative commons. If someone wanted to appreciate an image I&#8217;d posted &#38; leave a comment, that was good enough for me.</p>
<p>After a few months, I put up some images taken on a hike in the Peak District &#38; was contacted by someone enquiring as to how much it would cost to use the photos for commercial purposes. Not having a clue how to proceed, I turned to my fellow Flickr buddies for advice &#38; contacted the person in question to try &#38; establish how the images would be used &#38; in how many places they would be reproduced so that I could provide them with a fair quote. Needless to say, I didn&#8217;t hear back from them &#38; they removed their comments from the images &#38; their Flickr account was deleted. Now, this could be because they were no longer interested in using my images, &#38; I wouldn&#8217;t blame them if that was the case, or it could be because as soon as real money was mentioned they decided to help themselves to the full size digital images from my Flickr account.</p>
<p>From then on, resizing my images before uploading to the web became part of my work flow. By making the image smaller I hoped to retain enough quality so that people could appreciate the image online but low enough resolution to prove useless to anyone who wanted to reproduce it without my permission. At the time I discounted using a watermark or any other text overlay because I didn&#8217;t want anything to distract from the photo, plus I&#8217;ve seen some horrendous attempts of watermarking done badly.</p>
<p>Unfortunately, a couple of day ago I learnt of a  <a href="http://www.flickr.com/photos/communitybrother/">friend</a> who had one of their images stolen from their Flickr account &#38; reproduced for commercial gain without permission. To make matters worse, he only came across the offending image completely by accident &#38; the organisation carrying out the deed was a local media design company that really should know better. This problem is obviously rife &#38; can effect anyone who innocently shares their images online with others. To that end, I&#8217;ve decided to bake in a text box to the images I post to the web &#38;, if anything, it may even drive some traffic to my blog.</p>
<p>As I use Lightroom 2 to process my digital images, it appears that a plugin called <a href="http://www.photographers-toolbox.com/products/lrmogrify.php?sec=faq">Mogrify</a> is the best solution to create watermarks, text overlays, frames, borders &#38; many other cool things during export. PC users will also need to download &#38; install <a href="http://www.imagemagick.org/script/binary-releases.php#windows">ImageMagick</a> as well to make the whole package work. I&#8217;ve posted an example of the text overlay I&#8217;m proposing to add to my images at the top of this post &#38; any comments on whether you like it or how it could be improved would be much appreciated. Finally, for those who may be concerned that your images are being used elsewhere on the web without your knowledge, <a href="http://www.tineye.com/">TinEye</a> is a reverse image search engine that may be able to help you find them.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Convertir un PDF CMJN en Jpeg RVB]]></title>
<link>http://zigazou.wordpress.com/2009/11/02/convertir-un-pdf-cmjn-en-jpeg-rvb/</link>
<pubDate>Mon, 02 Nov 2009 16:29:18 +0000</pubDate>
<dc:creator>zigazou</dc:creator>
<guid>http://zigazou.wordpress.com/2009/11/02/convertir-un-pdf-cmjn-en-jpeg-rvb/</guid>
<description><![CDATA[Ce billet fait suite au billet sur la conversion de Jpeg CMJN en Jpeg RVB. Les outils Adobe génèrent]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ce billet fait suite au billet sur la conversion de Jpeg CMJN en Jpeg RVB.</p>
<p>Les outils Adobe génèrent souvent des PDF CMJN (ou CMYK).</p>
<p>Voici comment générer un aperçu ou une vignette d’un tel PDF avec ImageMagick sous Ubuntu (applicable à d’autres Linux).<img title="Lire la suite…" src="http://zigazou.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p>Tout d’abord, installez les paquets imagemagick et icc-profiles :</p>
<blockquote>
<pre>sudo apt-get install imagemagick icc-profiles</pre>
</blockquote>
<p>Le paquet ImageMagick installe la commande convert tandis que le paquet icc-profiles installe les profiles icc et icm dans le répertoire /usr/share/color/icc.</p>
<p>Ensuite, vous n’avez plus qu’à taper la ligne de commande suivante :</p>
<blockquote>
<pre>convert -colorspace cmyk \
        cmjn.pdf[0] \
        -profile /usr/share/color/icc/ISOcoated.icc \
        -profile /usr/share/color/icc/sRGB.icm \
        -resize 56x56 \
        rvb.jpg</pre>
</blockquote>
<p>Et voilà !</p>
<p>Notes :</p>
<ul>
<li>contrairement à la conversion de Jpeg à Jpeg, la conversion à partir de PDF requiert l’option -colorspace,</li>
<li>le [0] permet d’indiquer la page du PDF à convertir, ici la première page,</li>
<li>l’option -resize 56&#215;56 permet de redimensionner le résultat à 56&#215;56, cette option gardant le ratio d’aspect l’image finale sera au maximum de 56&#215;56 mais pourra être plus petite.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[HowTo: aggiungere nastro adesivo alle foto]]></title>
<link>http://idl3.wordpress.com/2009/10/30/howto-aggiungere-nastro-adesivo-alle-foto/</link>
<pubDate>Fri, 30 Oct 2009 14:14:55 +0000</pubDate>
<dc:creator>idl3</dc:creator>
<guid>http://idl3.wordpress.com/2009/10/30/howto-aggiungere-nastro-adesivo-alle-foto/</guid>
<description><![CDATA[Si, lo so, e&#8217; un HowTo idiota, ma cosa non farei pur di scrivere qualche comando con ImageMagi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Si, lo so, e&#8217; un <strong>HowTo</strong> idiota, ma cosa non farei pur di scrivere qualche comando con <strong>ImageMagick</strong> (<a href="http://idl3.wordpress.com/2009/10/26/howto-manipolare-immagini-da-terminale/">ogni scusa e&#8217; buona</a>). Ipotizziamo che abbiamo gia&#8217; creato la nostra <strong>cornice bianca</strong>, con le quattro striscette di <strong>nastro adesivo</strong> (create inserendo un rettangolo <strong>semitrasparente</strong>)[<a href="#anaaf1">1</a>]<a name="anaafa">.</a></p>
<p>Eccola qui gia&#8217; <strong>bella pronta</strong>, si tratta di un&#8217;immagine 450&#215;325:<br />
<img src="http://idl3.wordpress.com/files/2009/10/cornice-nastro-adesivo.png" alt="cornice-nastro-adesivo" title="cornice-nastro-adesivo" width="450" height="325" class="aligncenter size-full wp-image-683" /></p>
<div id="attachment_566" class="wp-caption alignleft" style="width: 155px"><img src="http://idl3.wordpress.com/files/2009/10/imagemagick.jpg?w=145" alt="ImageMagick" title="ImageMagick" width="145" height="150" class="size-thumbnail wp-image-566" /><p class="wp-caption-text">ImageMagick</p></div>Ora dobbiamo inserirci dentro (o meglio sotto) la nostra <strong>foto</strong>. Prima pero&#8217; la nostra foto deve essere <strong>ridimensionata</strong> affinche&#8217; abbia le <strong>stesse dimensioni della cornice</strong> (450&#215;325). Stiamo pero&#8217; attenti a non scombinare le <strong>proporzioni</strong>, quindi se le dimensioni della nostra immagine non sono un <strong>multiplo esatto della cornice</strong>, dovremmo <strong>tagliarne</strong> un pezzo. Una volta fatto questo dobbiamo inserire la foto (ridimensionata) sotto la cornice, o se preferite, dobbiamo <strong>sovrapporre la cornice alla foto</strong>.</p>
<p>Per fare tutti questi passaggi <strong>bastano due comandi da terminale</strong>. Vediamo pero&#8217; i tre casi possibili.</p>
<p><strong>1)</strong> La foto e&#8217; un multiplo esatto della cornice (ad esempio <strong>900&#215;650</strong>):<br />
<code>$ convert foto.jpg -resize 450x325 fotoridimensionata.jpg</code><br />
il risultato e&#8217; esattamente un&#8217;immagine dalle dimensioni volute 450&#215;325;</p>
<p><strong>2)</strong> La foto e&#8217; in proporzione alla cornice piu&#8217; larga che alta (ad esempio <strong>900&#215;600</strong>) ossia, ridimensionando col comando piu&#8217; sopra, ne risulterebbe un&#8217;immagine larga 450 ma piu&#8217; bassa di 325:<br />
<code>$ convert foto.jpg -resize x325 -gravity center  -crop 450x325+0+0 +repage fotoridimensionata.jpg</code><br />
con questo comando stiamo ridimensionando l&#8217;immagine partendo dall&#8217;altezza (portandola a 325), la larghezza seguira&#8217; di conseguenza, ma essendo piu&#8217; larga (in proporzione) rispetto alla cornice, dobbiamo tagliare un pezzo. Con l&#8217;opzione <code>gravity center</code> facciamo in modo che le parti vengano tagliate (<code>crop</code>) in egual misura dal bordo destro e dal bordo sinistro;</p>
<p><strong>3)</strong> La foto e&#8217; in proporzione alla cornice piu&#8217; alta che larga (ad esempio <strong>850&#215;650</strong>) ossia, ridimensionando col comando al punto 1), ne risulterebbe un&#8217;immagine alta 325 ma piu&#8217; stretta di 450:<br />
<code>$ convert foto.jpg -resize 450x -gravity center  -crop 450x325+0+0 +repage fotoridimensionata.jpg</code><br />
con questo comando stiamo ridimensionando l&#8217;immagine partendo dalla larghezza (portandola a 450), l&#8217;altezza seguira&#8217; di conseguenza, ma essendo piu&#8217; alta (in proporzione) rispetto alla cornice, dobbiamo tagliare un pezzo. Con l&#8217;opzione <code>gravity center</code> facciamo in modo che le parti vengano tagliate (<code>crop</code>) in egual misura dal bordo alto e dal bordo basso.</p>
<p>Una volta eseguito uno di questi tre comandi <strong>a seconda della nostra necessita&#8217;</strong> non ci resta che <strong>comporre</strong> la nostra foto con la cornice:<br />
<code>$ composite cornice.png foto.jpg fotoconcornice.jpg</code></p>
<p>Ora, immaginate che abbiate una <strong>lunga serie di foto</strong> che volete &#8220;<em>incorniciare</em>&#8220;, potete creare uno <strong>script</strong> (anche in <em>bash</em>) per automatizzare il tutto. Ad esempio:</p>
<pre><tt>---8&#60;---
<i><font color="#9A1900">#!/bin/bash</font></i>

<i><font color="#9A1900"># crea la directory dove mettere le foto ridimensionate</font></i>
<b><font color="#0000FF">if</font></b> <font color="#990000">[</font> <font color="#990000">!</font> -d <font color="#990000">.</font>/foto_ridimensionate <font color="#990000">];</font> <b><font color="#0000FF">then</font></b> mkdir <font color="#990000">.</font>/foto_ridimensionate<font color="#990000">;</font> <b><font color="#0000FF">fi</font></b><font color="#990000">;</font>

<i><font color="#9A1900"># crea la lista delle foto</font></i>
<b><font color="#0000FF">for</font></b> f <b><font color="#0000FF">in</font></b> <font color="#990000">*.</font>jpg<font color="#990000">;</font>
<b><font color="#0000FF">do</font></b>
    echo <font color="#FF0000">"Sto processando $f"</font>
    convert <font color="#009900">$f</font> -resize x325 -gravity center  -crop 450x325<font color="#990000">+</font><font color="#993399">0</font><font color="#990000">+</font><font color="#993399">0</font> <font color="#990000">+</font>repage <font color="#990000">.</font>/foto_ridimensionate<font color="#990000">/</font><font color="#009900">$f</font>
<b><font color="#0000FF">done</font></b>

mv cornice<font color="#990000">.</font>png <font color="#990000">.</font>/foto_ridimensionate/cornice<font color="#990000">.</font>png
cd <font color="#990000">.</font>/foto_ridimensionate

<i><font color="#9A1900"># crea la directory dove mettere le foto incorniciate</font></i>
<b><font color="#0000FF">if</font></b> <font color="#990000">[</font> <font color="#990000">!</font> -d <font color="#990000">.</font>/foto_incorniciate <font color="#990000">];</font> <b><font color="#0000FF">then</font></b> mkdir <font color="#990000">.</font>/foto_incorniciate<font color="#990000">;</font> <b><font color="#0000FF">fi</font></b><font color="#990000">;</font>

<i><font color="#9A1900"># crea la lista delle foto ridimensionate</font></i>
<b><font color="#0000FF">for</font></b> g <b><font color="#0000FF">in</font></b> <font color="#990000">*.</font>jpg<font color="#990000">;</font>
<b><font color="#0000FF">do</font></b>
    echo <font color="#FF0000">"Sto processando $g"</font>
    composite cornice<font color="#990000">.</font>png <font color="#009900">$g</font> <font color="#990000">.</font>/foto_ridimensionate<font color="#990000">/</font><font color="#009900">$g</font>
<b><font color="#0000FF">done</font></b>
---8&#60;---</tt></pre>
<p>Copiate, incollate in un file vuoto, rinominate come <code>incornicione.sh</code> (o come volete), rendetelo <strong>eseguibile</strong>:<br />
<code>$ chmod 777 incornicione.sh</code><br />
aprite un terminale, <strong>spostatevi nella directory che contiene le vostre foto</strong> ed eseguitelo:<br />
<code>$ .incornicione.sh</code></p>
<p>Alcune <strong>precisazioni</strong> sullo <strong>script bash</strong>. E&#8217; stato fatto in fretta, potrebbero esserci <strong>errori</strong>, nel caso segnalatemeli. Inoltre alcuni <strong>accorgimenti</strong>: il file della cornice si deve chiamare <code>cornice.png</code>; i file delle foto devono essere in <strong>formato JPG</strong>, devono appartenere tutti al <strong>secondo</strong> dei tre gruppi che ho elencato prima (se appartengono tutte ad un altro dei tre gruppi dovete <strong>modificare lo script di conseguenza</strong>); le foto e la cornice <strong>devono trovarsi nella medesima directory</strong>, senza altri file JPG ad esclusione delle foto che ci interessano.</p>
<p>A parte questo dovrebbe funzionare. Vi creera&#8217; una directory <code>foto_ridimensionate</code> e la sua sottodirectory <code>foto_incorniciate</code>. Almeno, questo era nelle mie intenzioni quando l&#8217;ho scritto.</p>
<p>[<a name="anaaf1">1</a>] Usando <strong>Gimp</strong> dovete creare un livello (trasparente) nel quale create una selezione rettangolare (delle dimensioni che volete per il pezzo di nastro adesivo), poi la riempite del colore che preferite, con la gomma piccola create i zigzag tipici del lato tagliato del nastro adesivo, infine riducete l&#8217;opacita&#8217; per creare un effetto semitrasparenza. Ci sono altri modi e io ho sicuramente saltato dei passaggi per brevita&#8217;. Per sapere come fare <strong>ci sono tanti tutorial sparsi per la rete</strong> (<a href="http://lmgtfy.com/?q=tutorial+nastro+adesivo+gimp">Google e&#8217; tuo amico</a>). [<a href="#anaafa">^</a>]
<hr />
<p style="text-align:right;"><a href="#content" title="torna su">[^] torna su</a>&#160;&#124;&#160;<a href="http://postli.com/post?u=http://idl3.wordpress.com/2009/10/30/howto-aggiungere-nastro-adesivo-alle-foto/&#38;t=HowTo: aggiungere nastro adesivo alle foto" title="Post to Postli" style="color:blue;text-decoration:none;">post<span style="color:orange;">&#60;</span><span style="color:red;">li</span><span style="color:orange;">&#62;</span></a>&#160;&#124;&#160;<a href="http://www.wikio.it/vote?url=http://idl3.wordpress.com/2009/10/30/howto-aggiungere-nastro-adesivo-alle-foto/" target="_blank"><img src="http://www.wikio.it/shared/img/vote/wikio2.gif" border="0" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[cropping massal buat pas foto]]></title>
<link>http://pr4ka5a.wordpress.com/2009/10/28/cropping-massal-buat-pas-foto/</link>
<pubDate>Wed, 28 Oct 2009 14:20:00 +0000</pubDate>
<dc:creator>pr4ka5a</dc:creator>
<guid>http://pr4ka5a.wordpress.com/2009/10/28/cropping-massal-buat-pas-foto/</guid>
<description><![CDATA[akhirnya tiba juga suatu hari gw dihadapkan sebuah permasalahan dimana gw harus melakukan croping ma]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>akhirnya tiba juga suatu hari gw dihadapkan sebuah permasalahan dimana gw harus melakukan croping massal. yaitu pembuatan pas foto yang sebenernya ga banyak-banyak amat, tapi karena gw males maka gw iseng iseng bikin sebuah script yang sebenernya ga spesial. cuma sengaja gw tulis biar bisa ngingetin gw suatu saat gw butuh karena gw pelupa hoho.. =)<br />
<!--more--><br />
<br />
inti dari script ini adalah sebuah bash script looping yang digabungkan dengan fungsi croping dan resize <a href="http://http://www.imagemagick.org/">imagemagick</a>, sebuah program opensource yang sederhana tapi powerfull (setidaknya menurut gw) =).</p>
<p>oke kita mulai saja ke scriptnya :</p>
<p>#&#8212;-mulai&#8212;&#8212;-</p>
<p>#!/bin/bash<br />
#copyleft : b0c4h_edan<br />
#masscropping pasfoto ^_^<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
#28102009<br />
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>for ((i=1; i&#60;=42; i++));</p>
<p>convert 32.jpg -shave 0&#215;151.81 -crop 1944&#215;2896-0-1100 -crop 1944&#215;2896+250-0 -resize 254&#215;299 32-trimed_n32.jpg;</p>
<p>done</p>
<p>#&#8212;&#8212;&#8212;-selesai&#8212;&#8212;&#8212;-</p>
<p>
sebelum kode ini di jalankan terlebih dahulu di set mode eksekusi :</p>
<p>$ chmod +x mCrop.sh</p>
<p>masukkan kode ini dalam satu folder dengan foto yang dituju.</p>
<p>dan jalankan,,,, jreng jreng jreng&#8230; jadilah pasfotonya hehe..</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[HowTo: manipolare immagini da terminale]]></title>
<link>http://idl3.wordpress.com/2009/10/26/howto-manipolare-immagini-da-terminale/</link>
<pubDate>Mon, 26 Oct 2009 05:25:43 +0000</pubDate>
<dc:creator>idl3</dc:creator>
<guid>http://idl3.wordpress.com/2009/10/26/howto-manipolare-immagini-da-terminale/</guid>
<description><![CDATA[Come avrete notato dal grande numero di post riguardanti operazioni da riga di comando sono un patit]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Come avrete notato dal grande numero di post riguardanti <strong>operazioni da riga di comando</strong> sono un patito del <strong>terminale</strong>. Il bello e&#8217; che, contrariamente a quanto pensa qualcuno, operare da terminale il piu&#8217; delle volte <strong>semplifica la vita</strong>, ne e&#8217; un esempio <a href="http://www.imagemagick.org/">ImageMagick</a>, di cui ho gia&#8217; scritto a proposito della <a href="http://idl3.wordpress.com/2009/09/25/howto-immagine-da-pagina-pdf/">conversione in immagini di file PDF</a>. Oggi vediamo come <strong>manipolare le immagini</strong> con questo potente programma.</p>
<div id="attachment_566" class="wp-caption alignleft" style="width: 155px"><img src="http://idl3.wordpress.com/files/2009/10/imagemagick.jpg?w=145" alt="ImageMagick" title="ImageMagick" width="145" height="150" class="size-thumbnail wp-image-566" /><p class="wp-caption-text">ImageMagick</p></div>Daro&#8217; per scontato che abbiate gia&#8217; installato <strong>ImageMagick</strong> nel vostro sistema. Passiamo dunque direttamente alle operazioni di manipolazione delle immagini. ImageMagick mette a disposizione una serie di comandi, quelli che vedremo in questo post sono: <code>mogrify</code>, <code>convert</code>, <code>montage</code> e <code>composite</code>.</p>
<p>Poniamo di avere una foto, la vogliamo <strong>ridimensionare</strong> in modo che non abbia una larghezza superiore a 600 pixel e un altezza superiore a 400 pixel. Bastera&#8217; dare questo comando:<br />
<code>$ mogrify -geometry 600x400 immagine.jpg</code><br />
se invece non ci interessa <strong>mantenere le proporzioni</strong>, ma vogliamo proprio un&#8217;immagine 600&#215;400 il comando sara&#8217;:<br />
<code>$ mogrify -geometry 600x400! immagine.jpg</code></p>
<p>Possiamo poi <strong>ridurre</strong> le dimensioni dell&#8217;immagine di una certa percentuale (ad esempio del 20%):<br />
<code>$ mogrify -geometry 20%x20% immagine.jpg</code><br />
o <strong>aumentarle</strong> (ad esempio del 10%):<br />
<code>$ mogrify -geometry 110%x110% immagine.jpg</code></p>
<p>Possiamo anche usare i comandi in combinazione, dunque aumentare la larghezza del 10% e ridurre l&#8217;altezza del 20%:<br />
<code>$ mogrify -geometry 110%x20% immagine.jpg</code></p>
<p><div id="attachment_569" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera1.png" alt="Immagine originale" title="pecora-nera" width="96" height="96" class="size-full wp-image-569" /><p class="wp-caption-text">Immagine originale</p></div>
<p>Per <strong>ruotare</strong> la nostra immagine di 90° in senso orario diamo il comando:<br />
<code>$ mogrify -rotate 90 immagine.jpg</code><br />
<div id="attachment_570" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-ruotata-90-gradi.png" alt="Immagine ruotata di 90 gradi" title="pecora-nera-ruotata-90-gradi" width="96" height="96" class="size-full wp-image-570" /><p class="wp-caption-text">Immagine ruotata di 90 gradi</p></div></p>
<p>Per <strong>ribaltare</strong> l&#8217;immagine <strong>verticalmente</strong> (mettere l&#8217;immagine a testa in giu&#8217;) usiamo il comando:<br />
<code>$ mogrify -flip immagine.jpg</code><br />
<div id="attachment_571" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-capovolta.png" alt="Immagine capovolta verticalmente" title="pecora-nera-capovolta" width="96" height="96" class="size-full wp-image-571" /><p class="wp-caption-text">Immagine capovolta verticalmente</p></div><br />
mentre per <strong>ribaltarla orizzontalmente</strong> (a specchio) usiamo il comando:<br />
<code>$ mogrify -flop immagine.jpg</code><br />
<div id="attachment_572" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-specchio.png" alt="Immagine capovolta orizzontalmente" title="pecora-nera-specchio" width="96" height="96" class="size-full wp-image-572" /><p class="wp-caption-text">Immagine capovolta orizzontalmente</p></div></p>
<p>Possiamo anche <strong>ridurre il numero di colori</strong> dell&#8217;immagine, il numero comunque dipende dal tipo di immagine, una foto normale non dovrebbe poter scendere sotto gli 8 colori, vediamo quindi il comando:<br />
<code>$ mogrify -colors 8 immagine.jpg</code><br />
<div id="attachment_573" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-4-colori.png" alt="Immagine a 4 colori" title="pecora-nera-4-colori" width="96" height="96" class="size-full wp-image-573" /><p class="wp-caption-text">Immagine a 4 colori</p></div></p>
<p>Se vogliamo creare una foto in bianco e nero (<strong>scala di grigi</strong>), il comando sara&#8217;:<br />
<code>$ mogrify -colorspace gray immagine.jpg</code><br />
<div id="attachment_574" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-scala-grigi.jpg" alt="Immagine in scala di grigi" title="pecora-nera-scala-grigi" width="96" height="96" class="size-full wp-image-574" /><p class="wp-caption-text">Immagine in scala di grigi</p></div><br />
se invece vogliamo proprio una foto in bianco e nero (<strong>monocromatico</strong>):<br />
<code>$ mogrify -monochrome immagine.jpg</code><br />
<div id="attachment_575" class="wp-caption aligncenter" style="width: 106px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-bianco-nero.jpg" alt="Immagine monocromatica" title="pecora-nera-bianco-nero" width="96" height="96" class="size-full wp-image-575" /><p class="wp-caption-text">Immagine monocromatica</p></div><br />
l&#8217;effetto sara&#8217; piuttosto brutto, ma a seconda dell&#8217;utilizzo che ne dovete fare puo&#8217; anche essere utile.</p>
<p>Se volete creare un <strong>bordo</strong> alla foto, useremo questo comando:<br />
<code>$ mogrify -border 3x3 immagine.jpg</code><br />
<div id="attachment_576" class="wp-caption aligncenter" style="width: 112px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-bordo-3x3.jpg" alt="Immagine con bordo 3x3" title="pecora-nera-bordo-3x3" width="102" height="102" class="size-full wp-image-576" /><p class="wp-caption-text">Immagine con bordo 3x3</p></div><br />
Il bordo puo&#8217; anche essere <strong>differenziato</strong> tra i lati e il sotto e il sopra. Cosi&#8217; se vogliamo un bordo di 5 pixel a destra e a sinistra, ma di 10 pixel su e giu&#8217;, daremo questo comando:<br />
<code>$ mogrify -border 5x10 immagine.jpg</code><br />
<div id="attachment_577" class="wp-caption aligncenter" style="width: 116px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-bordo-5x10.jpg" alt="Immagine con bordo 5x10" title="pecora-nera-bordo-5x10" width="106" height="116" class="size-full wp-image-577" /><p class="wp-caption-text">Immagine con bordo 5x10</p></div></p>
<p>Possiamo anche usare <code>frame</code> per creare una cornice, non cambia molto rispetto a <code>border</code>:<br />
<code>$ mogrify -frame 10x10 immagine.jpg</code><br />
<div id="attachment_578" class="wp-caption aligncenter" style="width: 126px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-nera-cornice-10x10.jpg" alt="Immagine con cornice 10x10" title="pecora-nera-cornice-10x10" width="116" height="116" class="size-full wp-image-578" /><p class="wp-caption-text">Immagine con cornice 10x10</p></div></p>
<p>Se vogliamo <strong>aggiungere un commento</strong> alla nostra foto, useremo questo comando:<br />
<code>$ mogrify immagine.jpg -comment "testo del commento"</code></p>
<p>Possiamo anche <strong>convertire</strong> la nostra foto da JPG a PNG:<br />
<code>$ mogrify -format png immagine.jpg</code><br />
o convertire un&#8217;immagine da PNG a JPG:<br />
<code>$ mogrify -format jpg immagine.png</code><br />
per gli altri formati <strong>guardatevi il manuale</strong>.</p>
<p>Ricordate che queste operazioni possono essere applicate a piu&#8217; file contemporaneamente utilizzando i <strong>caratteri jolly</strong>. Ad esempio:<br />
<code>$ mogrify -rotate 90 *.jpg</code><br />
per ruotare di 90° tutti i file JPG contenuti in quella directory.<br />
Oppure:<br />
<code>$ mogrify -rotate 90 imm*.jpg</code><br />
per ruotare di 90° tutti i file JPG il cui nome comincia con imm.</p>
<p>Alcune delle manipolazioni che abbiamo visto le possiamo <strong>ottenere anche con altri comandi</strong>. Ecco alcuni esempi.</p>
<p>Per <strong>ridimensionare</strong> l&#8217;immagine (mantenendo le proporzioni):<br />
<code>$ convert immagine.jpg -resize 450x300 immagineridimensionata.jpg</code><br />
senza mantenere le proporzioni:<br />
<code>$ convert immagine.jpg -resize 450x300! immagineridimensionata.jpg</code><br />
per <strong>convertire</strong> un&#8217;immagine da un formato ad un altro:<br />
<code>$ convert immagine.jpg immagine.png</code><br />
per <strong>capovolgere verticalmente</strong> l&#8217;immagine (sottosopra):<br />
<code>$ convert -flip immagine.jpg immaginecapovolta.jpg</code><br />
per <strong>capovolgerla orizzontalmente</strong> (a specchio):<br />
<code>$ convert -flop immagine.jpg immaginespeculare.jpg</code><br />
per convertire la nostra foto colorata in <strong>scala di grigi</strong>:<br />
<code>$ convert -colorspace gray immagine.jpg immaginegrigia.jpg</code><br />
in <strong>bianco e nero</strong>:<br />
<code>$ convert -monochrome immagine.jpg immaginebianconera.jpg</code></p>
<div id="attachment_601" class="wp-caption aligncenter" style="width: 322px"><img src="http://idl3.wordpress.com/files/2009/10/pecore-colorate.png" alt="Immagini originali" title="pecore-colorate" width="312" height="52" class="size-full wp-image-601" /><p class="wp-caption-text">Immagini originali</p></div>
<p>Possiamo anche <strong>creare una gif animata</strong> a partire da un gruppo di immagini:<br />
<code>$ convert -delay 100 *.jpg gifanimata.gif</code><br />
<div id="attachment_579" class="wp-caption aligncenter" style="width: 62px"><img src="http://idl3.wordpress.com/files/2009/10/pecora-colorata-animata.gif" alt="Immagine animata" title="pecora-colorata-animata" width="52" height="52" class="size-full wp-image-579" /><p class="wp-caption-text">Immagine animata</p></div><br />
in questo caso la gif ha 1 fps (delay e&#8217; in centesimi di secondo).<br />
per <strong>creare un <em>morphing</em></strong> tra due immagini:<br />
<code>$ convert -morph 15 -delay 10 immagine1.jpg immagine2.jpg morphingimmagine.gif</code><br />
<div id="attachment_603" class="wp-caption aligncenter" style="width: 204px"><img src="http://idl3.wordpress.com/files/2009/10/billinus.gif" alt="Morphing di una foto di Linus Torvalds e una foto di Bill Gates" title="billinus" width="194" height="264" class="size-full wp-image-603" /><p class="wp-caption-text">Morphing di una foto di Linus Torvalds e una foto di Bill Gates</p></div><br />
ne risultera&#8217; una gif animata in cui tra la prima e l&#8217;ultima immagine ci saranno 15 immagini di transizione, con un ritardo di 10 centesimi di secondo. Vedete come il morphing si possa fare anche con immagini cosi&#8217; diverse tra loro (Linus Torvalds e Bill Gates), ovviamente se le immagini sono piu&#8217; somiglianti l&#8217;effetto sara&#8217; migliore.</p>
<p>Ma il comando <code>convert</code> consente di fare cose un po&#8217; piu&#8217; elaborate, ad esempio:<br />
<code>$ convert -background black -fill orange -font FreeSerif-BoldItalic -pointsize 72 label:'Idl3 Blogger' idl3.gif</code><br />
<div id="attachment_581" class="wp-caption aligncenter" style="width: 390px"><img src="http://idl3.wordpress.com/files/2009/10/idl3.gif" alt="Semplice logo creato con ImageMagick" title="idl3" width="380" height="88" class="size-full wp-image-581" /><p class="wp-caption-text">Semplice logo creato con ImageMagick</p></div><br />
e anche molto piu&#8217; elaborate.</p>
<p>Col comando <code>montage</code>, possiamo <strong>aggiungere un&#8217;ombra</strong> su sfondo bianco:<br />
<code>$ montage immagine.jpg -background white -geometry +10+10 -shadow ombrasfondobianco.jpg</code><br />
aggiungere un&#8217;ombra su sfondo trasparente:<br />
<code>$ montage immagine.jpg -background none -geometry +10+10 -shadow ombrasfondotrasparente.png</code><br />
<strong>fare un collage</strong> di immagini:<br />
<code>$ montage img1.jpg img2.jpg img3.jpg img4.jpg collage.png</code></p>
<p>Con <code>composite</code> invece, possiamo <strong>inserire un&#8217;immagine piccola in una piu&#8217; grande</strong>:<br />
<code>$ composite immpiccola.jpg immgrande.jpg immaginecombinata.jpg</code><br />
<strong>fondere</strong> due immagini dando una percentuale di fusione della seconda rispetto alla prima:<br />
<code>$ composite -blend 30 imm1.jpg imm2.jpg immaginecombinata.jpg</code><br />
possiamo anche creare un <em>morphing</em>:<br />
<code>$ composite -compose difference imm1.jpg imm2.jpg morphingimmagine.jpg</code><br />
o:<br />
<code>$ combine -compose difference imm1.jpg imm2.jpg morphingimmagine.jpg</code></p>
<p>Per approfondire potete leggere il <a href="http://www.imagemagick.org/Usage/">manuale di Imagemagick</a>. E&#8217; bello corposo. Ovviamente vi consiglio anche di leggervi i manuali di ogni singolo comando che abbiamo visto:<br />
<code>$ man mogrify</code><br />
<code>$ man convert</code><br />
<code>$ man montage</code><br />
<code>$ man composite</code></p>
<p>Poi ci sono anche <strong>altri comandi</strong>, ad esempio, per <strong>guardare</strong> l&#8217;immagine:<br />
<code>$ display immagine.jpg</code></p>
<p>Per <strong>creare uno <em>screenshot</em></strong> di una finestra:<br />
<code>$ import screenshotfinestra.jpg</code><br />
una volta dato il comando posizionate il cursore del mouse sulla finestra di cui volete creare l&#8217;immagine e premete.<br />
Se invece volete creare lo <em>screenshot</em> di tutto lo schermo:<br />
<code>$ import -window root screenshotschermo.jpg</code></p>
<p>Per vedere le <strong>informazioni</strong> su un file immagine:<br />
<code>$ identify immagine.jpg</code><br />
o:<br />
<code>$ identify -verbose immagine.jpg</code><br />
per informazioni maggiori.</p>
<p>Le possibilita&#8217; offerte da <strong>ImageMagick</strong> sono tantissime, potete creare <em>script</em> ad esempio, in modo da facilitare la <strong>manipolazione ricorsiva</strong> di immagini. Ad esempio, questo (preso da <em>codiceasbarre.net</em>):</p>
<pre><tt>---8&#60;---
<i><font color="#9A1900">#!/bin/bash</font></i>

<font color="#009900">NOME_CARTELLA</font><font color="#990000">=</font><font color="#FF0000">"./piccole/"</font>
<font color="#009900">NOME_FILE_CONF</font><font color="#990000">=</font><font color="#FF0000">"conf.php"</font>
<font color="#009900">NOME_ARRAY</font><font color="#990000">=</font><font color="#FF0000">"foto"</font>
<font color="#009900">SCALE</font><font color="#990000">=</font><font color="#FF0000">"640X480"</font>

<b><font color="#000000">function error()</font></b> { echo -e $<font color="#993399">1</font> <font color="#990000">;</font> <b><font color="#0000FF">exit</font></b> <font color="#993399">1</font> <font color="#990000">;</font> }

<b><font color="#0000FF">test</font></b> -z <font color="#FF0000">"$1"</font> <font color="#990000">&#38;&#38;</font> error <font color="#FF0000">"Inserire una directory</font><font color="#CC33CC">\n</font><font color="#FF0000">"</font>`basename $<font color="#993399">0</font>`<font color="#FF0000">" &#60;directory&#62;"</font>
cd $<font color="#993399">1</font> <font color="#990000">&#62;&#38;</font> /dev/null
<font color="#990000">[</font> $<font color="#990000">?</font> <font color="#990000">==</font> <font color="#993399">1</font> <font color="#990000">]</font> <font color="#990000">&#38;&#38;</font> error <font color="#FF0000">"Inserire una directory valida!</font><font color="#CC33CC">\n</font><font color="#FF0000">Directory: $1"</font>

<b><font color="#0000FF">test</font></b> -d <font color="#FF0000">"$NOME_CARTELLA"</font> <font color="#990000">&#38;&#38;</font> error <font color="#FF0000">"Cartella gia' esistente"</font>
mkdir <font color="#009900">$NOME_CARTELLA</font> <font color="#990000">&#62;&#38;</font> /dev/null
<font color="#990000">[</font> $<font color="#990000">?</font> <font color="#990000">==</font> <font color="#993399">1</font> <font color="#990000">]</font> <font color="#990000">&#38;&#38;</font> error <font color="#FF0000">"Non ho potuto creare la cartella di destinazione $NOME_CARTELLA</font><font color="#CC33CC">\n</font><font color="#FF0000">"</font>

echo <font color="#FF0000">"&#60;?php //file di conf immagini"</font> <font color="#990000">&#62;</font> <font color="#FF0000">"$NOME_CARTELLA$NOME_FILE_CONF"</font>
echo <font color="#FF0000">"</font><font color="#CC33CC">\$</font><font color="#FF0000">$NOME_ARRAY = array("</font> <font color="#990000">&#62;&#62;</font> <font color="#FF0000">"$NOME_CARTELLA$NOME_FILE_CONF"</font>
<b><font color="#0000FF">for</font></b> f <b><font color="#0000FF">in</font></b> <font color="#990000">*</font>
<b><font color="#0000FF">do</font></b>
	<b><font color="#0000FF">if</font></b> <font color="#990000">!</font> <b><font color="#0000FF">test</font></b> -d <font color="#FF0000">"$f"</font>
	<b><font color="#0000FF">then</font></b>
		echo -n <font color="#FF0000">"Sto modificando $f..."</font>
		convert -resize <font color="#009900">$SCALE</font> <font color="#FF0000">"$f"</font> <font color="#FF0000">"$NOME_CARTELLA$f"</font> <font color="#990000">&#62;&#38;</font> /dev/null
		<b><font color="#0000FF">if</font></b> <font color="#990000">[</font> $<font color="#990000">?</font> <font color="#990000">==</font> <font color="#993399">0</font> <font color="#990000">]</font>
		<b><font color="#0000FF">then</font></b>
			echo <font color="#FF0000">"OK -&#62; $NOME_CARTELLA$f"</font>
			echo -e <font color="#FF0000">"</font><font color="#CC33CC">\t\"</font><font color="#FF0000">$f</font><font color="#CC33CC">\"</font><font color="#FF0000"> =&#62; </font><font color="#CC33CC">\"\"</font><font color="#FF0000">,"</font> <font color="#990000">&#62;&#62;</font> <font color="#FF0000">"$NOME_CARTELLA$NOME_FILE_CONF"</font>
		<b><font color="#0000FF">else</font></b>
			echo <font color="#FF0000">"FAIL -&#62; $f non e' un immagine"</font>
		<b><font color="#0000FF">fi</font></b>
	<b><font color="#0000FF">fi</font></b>
<b><font color="#0000FF">done</font></b>

echo -e <font color="#FF0000">"</font><font color="#CC33CC">\t</font><font color="#FF0000">);</font><font color="#CC33CC">\n</font><font color="#FF0000">?&#62;"</font> <font color="#990000">&#62;&#62;</font> <font color="#FF0000">"$NOME_CARTELLA$NOME_FILE_CONF"</font>

<b><font color="#0000FF">exit</font></b> <font color="#993399">0</font>
---8&#60;---</tt></pre>
<p>Potete trovare la spiegazione di questo script su <a href="http://www.codiceasbarre.net/blog/2009/10/01/34">Bash scripting e ImageMagik</a>.</p>
<hr />
<p style="text-align:right;"><a href="#content" title="torna su">[^] torna su</a>&#160;&#124;&#160;<a href="http://postli.com/post?u=http://idl3.wordpress.com/2009/10/26/howto-manipolare-immagini-da-terminale/&#38;t=HowTo: manipolare immagini da terminale" title="Post to Postli" style="color:blue;text-decoration:none;">post<span style="color:orange;">&#60;</span><span style="color:red;">li</span><span style="color:orange;">&#62;</span></a>&#160;&#124;&#160;<a href="http://www.wikio.it/vote?url=http://idl3.wordpress.com/2009/10/26/howto-manipolare-immagini-da-terminale/" target="_blank"><img src="http://www.wikio.it/shared/img/vote/wikio2.gif" border="0" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[imagemagick - пример использования]]></title>
<link>http://rostoteka.wordpress.com/2009/10/25/imagemagick-1/</link>
<pubDate>Sun, 25 Oct 2009 17:29:13 +0000</pubDate>
<dc:creator>rostoteka</dc:creator>
<guid>http://rostoteka.wordpress.com/2009/10/25/imagemagick-1/</guid>
<description><![CDATA[Имеется изображение: Необходимо получить нечто такое (я поместил изображение на красный фон, чтобы б]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Имеется изображение:</p>
<p><a href="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf.png"><img src="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf.png" alt="Исходное изображение" /></a></p>
<p>Необходимо получить нечто такое (я поместил изображение на красный фон, чтобы была видна тень):</p>
<p>&#160;</p>
<p><a style="background:red none repeat scroll 0 0;display:inline-block;" href="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid.png"><img src="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid.png" alt="Конечный результат" /></a></p>
<p>Подробности &#8211; под катом<!--more--></p>
<p>При помощи ImageMagick это делается очень просто:</p>
<div>
<div id="p4811">
<div id="p481code1"><span style="color:#800000;">convert wolf.png \<br />
-bordercolor white -border 6 \<br />
-bordercolor grey70 -border 1 \<br />
-background  black  \( +clone -shadow 60&#215;4+4+4 \) +swap \<br />
-background  none -flatten -quality 95 wolf-polaroid.png</span></div>
</div>
</div>
<p>Вторая строка задает цвет (белый) и размер (6 пикселей) окантовки, третья строка задает цвет и размер рамочки вокруг рисунка, четвертая строка создаёт тень с 60% прозрачностью, а пятая строка собирает все в один рисунок.</p>
<p>Но это еще не всё <img src="http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif" alt=":-)" /> С помощью ImageMagick можно поворачивать изображения:</p>
<div>
<div id="p4812">
<div id="p481code2"><span style="color:#800000;">convert wolf.png \<br />
-bordercolor white -border 6 \<br />
-bordercolor grey70 -border 1 \<br />
-background none -rotate 20 \<br />
-background  black  \( +clone -shadow 60&#215;4+4+4 \) +swap \<br />
-background  none -flatten -quality 95 wolf-polaroid-rotated.png</span></div>
</div>
</div>
<p>Поворот (в градусах) задаётся в четвёртой строке. Поворот должен идти после задания рамок, это важно. В результате получится такое изображение:</p>
<p><a href="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid-rotated.png"><img src="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid-rotated.png" alt="Повернутое изображение" /></a></p>
<p>К изображению можно добавить надпись:</p>
<div>
<div id="p4813">
<div id="p481code3"><span style="color:#800000;">convert wolf.png \<br />
-size 1&#215;18 xc:white -background white -append -gravity south -annotate 0, &#8216;Wolf&#8217; \<br />
-bordercolor white -border 6 \<br />
-bordercolor grey70 -border 1 \<br />
-background none -rotate 20 \<br />
-background  black  \( +clone -shadow 60&#215;4+4+4 \) +swap \<br />
-background  none -flatten -quality 95 wolf-polaroid-rotated-labelled.png</span></div>
</div>
</div>
<p>Получится такое вот изображение:<br />
<a href="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid-rotated-labelled.png"><img src="http://blog.sjinks.pro/wp-content/uploads/2009/01/wolf-polaroid-rotated-labelled.png" alt="Изображение с подписью" /></a></p>
<p>ImageMagick предоставляет очень большие возможности по обработке изображений; лично я предпочитаю его GD и прочим извращениям.</p>
<p><a href="http://blog.sjinks.pro/" target="_blank">Взято отсюда &#62;&#62;&#62; </a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Quick way to create gallery with PHP and imagemagick]]></title>
<link>http://mroddball.wordpress.com/2009/09/29/quick-way-to-create-gallery-with-php-and-imagemagick/</link>
<pubDate>Tue, 29 Sep 2009 20:32:34 +0000</pubDate>
<dc:creator>mroddball</dc:creator>
<guid>http://mroddball.wordpress.com/2009/09/29/quick-way-to-create-gallery-with-php-and-imagemagick/</guid>
<description><![CDATA[Last week I had to upload some photos for my family, but it&#8217;s rather ugly just to have apache]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Last week I had to upload some photos for my family, but it&#8217;s rather ugly just to have apache&#8217;s &#8220;Index of&#8221; page when people are used to have nice thumbnails. After a couple of minutes I&#8217;ve come up with this: <a href="http://pastebin.com/f497476d4">pastebin</a>. Just put it in .php file, upload photos in the same folder and type this commands:</p>
<p><code>mkdir thumb</code><br />
<code>find . -maxdepth 1 -iname "*.jpg" -exec convert {} -resize 10% -quality 75 thumb/{} \;</code></p>
<p>Depending on how big your photos are, you will have to play a little with -resize option, but safest way is to define static like -resize 250&#215;188, and if you think some of the pictures won&#8217;t look good don&#8217;t worry. Imagemagick checks if ratio will be the same after conversion, and in case that it wouldn&#8217;t  be, height takes precedence.  Imagemagick can be used directly from php, but it could take some time to generate all thumbnails and some hosting companies set <em>max_execution_time </em>to lower than minute (default is 30 seconds).</p>
<p><span style="background-color:#ffffff;">Enjoy!</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Imagemagick: Pdf to bitmap density quirk]]></title>
<link>http://cambiatablog.wordpress.com/2009/09/24/imagemagick-pdf-to-bitmap-density-quirk/</link>
<pubDate>Thu, 24 Sep 2009 12:32:44 +0000</pubDate>
<dc:creator>cambiatablog</dc:creator>
<guid>http://cambiatablog.wordpress.com/2009/09/24/imagemagick-pdf-to-bitmap-density-quirk/</guid>
<description><![CDATA[When converting bitmapcontained pdfs to bitmaps using the imagemagick convert method, beware the par]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When converting bitmapcontained pdfs to bitmaps using the imagemagick convert method, beware the parameter order! The density parameter sets the resolution of the bitmap conversion before resizing &#8211; therefore, the higher density value, the better resulting quality.<br />
So, the followning should work, but doesnt:</p>
<p style="padding-left:30px;">convert source.pdf -resize 630&#215;891 -density 300 result%04d.png</p>
<p>By some reason the -density parameter has to be set before the source file name. This works:</p>
<p style="padding-left:30px;">convert -resize 630&#215;891 -density 300 <strong>source.pdf</strong> result%04d.png</p>
<p>By the way, the &#8220;%04d&#8221; tag in the resulting file name gives an autonumbering with leading zeros, in this case 4 digits in total. Thus:</p>
<p style="padding-left:30px;">page0000.png<br />
page0001.png<br />
page0002.png</p>
<p>etc.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
