Click here to Skip to main content
15,886,077 members
Articles / Multimedia / GDI

Image Per Pixel Enumeration, Pixel Format Conversion and More

Rate me:
Please Sign up or sign in to vote.
4.93/5 (26 votes)
20 Jun 2013CPOL7 min read 84.6K   3.5K   53  
A set of handy extension methods to help you with quick Image modifications
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="sourceFormats.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="dialogOpenFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>148, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        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
        ////////7ezr/3Jzb/84Ni//MzIt/zAvKv8yLyz+MS4q/SgmJPxaXEl/GhcVAbGppwC1sKEVo52Xxq+l
        n/zBt6/929DH/vPl2//9+O7//f39//38/P/6+vr/+/v6//v7+//8/Pz///////X08/9VVFH/KSci/zIu
        Kv4wLyv+Ly0p/CknJPWFhHRmDw4MAbKpogC6ursIoZuUkamgmfq7sqr80snB/uve1f777+b//fz4//z7
        /P/q6ej/4ODe//b29v/+/v3/+/v7///////BwL7/JiQg/y8uKv4wLir9Kigl/Dk1LOGemZM0AAAAAMC+
        uQCnnZMBqqSfOaCak+KyqaD8x720/uHWzf706N////7z/9bW1f9JSkf/MjEs/4uKiP/5+vn//f39////
        ///y8fH/RUM+/igmIv4wLin9JCMe+l1YU6mwr6cPJiIbAKqkpAConI4Br62sCqedjpamnZb5u7Gp/NPJ
        v/7o29L+//70/4SBfv8TDwv/IyEd/xwaF//R0c////////z8/P/////+XFtX/iQiHf0pKST7PDYr55iS
        i1F0d3YDjIR6ALCtqQCsqp8ApJqSAbCrojKimpLKqqGZ+8G3r/zYzcT++e7k/qWfl/4eHhv/KScj/ygm
        If/T0tD//////vz9/f76+fj+VFNQ/h8dGvsxLCXyb2dbf6eing9OST4BuK2fAAAAAAC6sKsAtJ2CAKmo
        qQO5nX1QppaI4quim/vEua/829DH/vDl2/6WkIj+YF5Y/qemov7///7+/f38/v////7e3d39Liwo+y0m
        H/h7WD6mnYJoFVVDOAGXmZQAfXhyAAAAAADJxLcAo5+eALCdigG0noUFuph9UKSZjcOnn5fyvLKr/NbL
        wv3x5t39++/l/f/58v399ev9+/Tq/fv49PyBfnn6JyUh535iU5KqaUobQ0ZDAryjlAAOCgAAzcGxAAAA
        AAAAAAAAzrCPALG4wACxmHwBq6WfA6+imBupn5RmrqGWw7auo+3DurD70ce+/drPxv3g1Mr93tHH97ao
        neR8cGqyg3t2UZGNihBjUkMClIFvADErJQCHhX4AAAAAAAAAAAAAAAAAAAAAALOXfwC8noAAtph+Aaib
        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
        Kv0vLCj+Ly8q/SooJvwqLCrafH11OBMVEgEwNCYAsq6lAJWMhQC7vsIdmpONwK2jmvy4r6f9zcK5/efd
        0/9WVlD+GRoW/yooJP4oJyP/LSkl/iEhHf8dHBf+Hh4a/yMiHP4uKyj/LS0p/i4sKP8xLyv+NDMt/zIw
        LP4vLSn/MC4q/jAuKv4wLir9Li0p/B8fG/xVU0+FysrKCAYGAQC3t6YAnpaSAKytpDugm5XerqWg/Lqz
        qv7Nw7v97+La/rqyqv0iJCD+JSQg/SsqJv4sKib9LCsn/i0sJv0uLSn+Ly8p/S8tKf4uLCj9MC8r/j49
        Nv0+PTj+NzUw/TEvK/4xLyv9Ly0p/jAvK/0wLyn9Hx0b/FJTTraLkIUQAAAAALe0pwClnpoBoJ2QWKCb
        lfyxqqL9vbWs/tHHv/7n3NL//vft/o6Oif8gIBz+JyYi/y0rJ/4tLCb/Li0o/i8uKv8wLir+MS4q/zAu
        Kv40My//UE1I/mJhX/9QUU3+OTcx/zEvK/4xLyv/Ly0p/jEvK/0jISH9OT0z5VRbSRcAAAABtKukAKyl
        ngGdlY9YpJ6X/LKro/2/t67+1MzD/ejb0v788Ob9+fr3/p2Zl/05OTT+JCUi/SgmIv4qKSX9Kyom/i8s
        KP0xLyv+MS8r/T47Nv5wb239pqai/oSEgP1HR0P+Ly8r/TAuKv4vLyv9MS4q/SYmIv0zNy7lR0o/FwQF
        BgGzqaMBs6uhAZyUj1mpoJj9ta2m/cK5sf/WzMP+6t3U//nt4v7//vj//////tbV0v+Niof+X19e/1hV
        UP5PTkn/QD89/jEwLP8sLyn+QUA8/39+ev7BwL3/nZqW/k1MSP8vLyz+MDIs/zExLf4yMi7+Kism/TM1
        LuZFRz0YCgkJAbKpowGyqqABnJSPWaagmP22rqb9wrmx/tbMw/3p3dT++u7l/f358P7+//z9/////v//
        //39/P3++Pj3/fX09P7h4OH9r66u/mhmYv07PDj+X2Bb/ZONhv50c2/9REE7/jIxLf0zMy3+MDIu/TEz
        L/0rKiX9Njgv5UhMQBgJCAcBs66jAKylnAGdmY9YpZ6V/LWro/2/tq7+0snA/ufc0//46+D+/Pbs//v9
        +f79+/3//f7+/v7////////+//////////7/////+Pf2/qmppv9MS0n+TUpD/0ZEP/41NS//MTAt/jMw
        K/8yMSv+MTAs/SYlIv0+QDblXF5LFwAAAgHCuaYApJuZAaukkViknJT8sami/buyqv7Pw7z95NjP/vPm
        3P379Ov+/f34/f38/P79/P39/Pz7/vz8/P37+/v+/v7+/fz8/P7+/v/9/////sC/vv1DQTz+LCsl/TMv
        LP4wLir9MjAs/jIwKv0yLyr9IyAe/U5PQOV5el8XAAAAAcu/pQCYkpIAubSoO5+al96upJ78ua+m/svA
        uP7e0sn/8OLY/vvx5v/9/PT+/fz9//38/f77/Pv//Pz8/vv7+//9/f3+/f39//z8/P7+/v7//////qmq
        p/8pKCT+Ly0m/zEvK/4wLir/MS8r/jAuKf0gHxz8YmJctqimlxAAAAEAu7WmAJySiwC5vMAdnpiRwKmg
        mfy0raX9xLuy/djOxf7p3dT9+erf/v357v39/Pv+/fz9/fv7+/719PT99fX1/vz8/P39/fv+/f39/fz8
        /P7////9+Pj4/mNjX/0iHxr+MS8s/S8tKf4wLir9LCon/ConIfx5cmeFr7G2CDwzIgDCuJ8Aq6ekAKuf
        kQGsppxvnpmU87Cmnvy+tKv9z8W8/uLXzv7y5dz/+/Ho/v799P/6+vr+v8C+/3p5df5/fXr/wcG//vn5
        +v/+/v7+/Pz8//z8/P7/////pqWj/iQiHv8vLin+MC0o/i8uKP0nJSD8Pjs43q6mljwICQcBloRiAAAA
        AADJyMkAo56YAaqloBuim5PMpp+X/LatpP3GvLP+2s/G/erf1v736+D9///1/tPS0P0yMCz+DxAK/RQT
        D/4xMCz9w8O//v////38/Pz+/Pz8/f////7U0tD9MzAt/iooJP0vLSj+LCsm/SIhHPd0a2CnxsnNHW9l
        XAE4NTAAAAAAAMG0ogCplX0AsLCxBa6fjm2hlo33rKae/L2yqf7OxLv939TL/+/j2P7//vX/nZqV/hMR
        Cv8yLif+LSwp/xIRDf50c3D//////vv7/P/8/Pz+/////+fk5P48Ozf+JiUh/S8uKP0hIR/8TkIv6Ly7
        uFYWDwABtrOyAIp5VAAAAAAAzM7SAK+ZegCbmI0AtrOvIqSil6uhmJP3r6ef/cC2sP3TyMD+4tjO/f3y
        6f65sav9Hx4b/iUlIf0tLCj+FxYS/Xh1cv7////9/Pz8/vz8/P3////+3dzb/TY2Mf4pJiH9JCUh/DQx
        KuyIgHZ9p6WiEF9YTQDAtqwAAAAAAAAAAAAAAAAAtqyjALu9wACelo8Bt6yiLquYgdugmpT7s6mf/cS7
        sf7VycL96NvS/vLn3/5/enT/Li0o/ikpJf9JR0P+zM3L//////77+/3/+/v7/v////68u7v9KCYh/h8h
        Hvw1KyX5imhFprC4wBGFblQBAAAAALS0swAAAAAAAAAAAAAAAADPtpUAlpWKAMCmigCvm4IEv595R7CV
        f92hmZP7rqWe/MW7svzTyL/+6t3U/fPm3f7Cu7H9s66m/t3e2v3////+/f33/fz89/78+/f9///+/nl6
        dfwUEw/8PjIo+5JhSLalcEoeVUY5AruqmQAwJRYA0Mi+AAAAAAAAAAAAAAAAAAAAAAAAAAAAtrOzALqo
        mwCYk5ECw5l3QKmckrChlortq6Kb+ryyqv3Ow7r839TL/vbp4P3/9Oj+/fPs/frw5f778eb9+/Pp/v37
        8/y+vLn8Lism9zozLeiMd22Nw3NPICk3NQHgrpoAIyYYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AADdt44AuJ58AL6cdgCopKECsKGVEK+ppEyilIesqZyR7LCnnPy5tK79yL+4/NPLw/3Y0cr84dbO/eHX
        0fzk18/9wK+i/GtiXupuVkypq6ysVp6ioxBaOygBv4RXAAUPDwDRl2UAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAC9l3gAoZqSAL2XdwGml4sBq5+UAbSzsxC4oY1Pr6eel7ilksy9qJblxbKg5si4
        pOXOuqXm0rmh5ci5q8qmloiIrpmRSLKysR83LSYBb0w6AbJxUgBJNiwAtXJUAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACulH8AsrCwALChlQCspJwApZiLAa6oogK1tLMLwqaJFMGk
        iRjHrZIYy7KUGM6zlhjVsY4YzrurFL27uglya2UBYEpBAZWRjwChnJoAIh8aAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmZfgC0tLQAuJ+KAaue
        jwGqp6MBuLSyAcTAvAHIxsQB0cvGAdLMxwHEu7EBnIJtAa2YkAG3t7YAkWBNAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA/+AD///AAf/+AAB//gAAP/wAAB/4AAAP8AAAB/AAAAfgAAADwAAAAcAA
        AAHAAAABwAAAAYAAAACAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAHAAAABwAAAAcAAAAHgAAAD8AAAB/AA
        AAf4AAAP/AAAH/4AAD/+AAB//8AB///gA/8=
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Czech Republic Czech Republic
Contacts: EMAIL - smartk8@gmail.com

Comments and Discussions