Index: /extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs	(revision 3860)
+++ /extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs	(revision 3861)
@@ -11,5 +11,5 @@
         public Int32 Id { get; set; }
         public Int32 Width { get; set; }
-         public Int32 Height { get; set; }
+        public Int32 Height { get; set; }
         public String File { get; set; }
         public Uri UrlThunb { get; set; }
@@ -23,3 +23,10 @@
 
     }
+
+    public class PwgImageRate
+    {
+        public Int32 Count { get; set; }
+        public Double  Average { get; set; }
+        public Double Stdev { get; set; }
+    }
 }
Index: /extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj	(revision 3860)
+++ /extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj	(revision 3861)
@@ -4,5 +4,5 @@
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProductVersion>9.0.30729</ProductVersion>
+    <ProductVersion>9.0.21022</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{64C068C5-DBFE-4712-9081-B9100698F35C}</ProjectGuid>
@@ -54,4 +54,5 @@
     <Compile Include="DTO\PwgSession.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Proxy\PwgImagesProxy.cs" />
     <Compile Include="Proxy\PwgCategoriesProxy.cs" />
     <Compile Include="Proxy\Helper\PwgProxyReponseHelper.cs" />
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs	(revision 3860)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs	(revision 3861)
@@ -150,5 +150,5 @@
             try
             {
- //               Console.WriteLine(xmlData.ReadToEnd());
+                //Console.WriteLine(xmlData.ReadToEnd());
 
                 System.Xml.Serialization.XmlSerializer xsSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/PwgImagesProxy.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/PwgImagesProxy.cs	(revision 3861)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/PwgImagesProxy.cs	(revision 3861)
@@ -0,0 +1,46 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Com.Piwigo.Lib.DTO;
+using System.Web;
+using Com.Piwigo.Lib.Proxy.Response;
+using Com.Piwigo.Lib.Proxy.Helper;
+
+namespace Com.Piwigo.Lib.Proxy
+{
+    static class PwgImagesProxy
+    {
+        /// <summary>
+        /// pwg.images.rate
+        /// </summary>
+        /// <param name="imageId"></param>
+        /// <param name="imageRate"></param>
+        /// <returns></returns>
+        static public PwgImageRateProxyResponse pwg_images_rate(Int32 imageId, Int32 imageRate)
+        {
+            PwgImageRateProxyResponse response = null;
+            try
+            {
+                StringBuilder data = new StringBuilder();
+                data.Append("method=pwg.images.rate");
+                Boolean firstOcc = false;
+                PwgProxyReponseHelper.buildQueryFromValue<Int32>(imageId, "image_id", ref firstOcc, data);
+                PwgProxyReponseHelper.buildQueryFromValue<Int32>(imageRate, "rate", ref firstOcc, data);
+
+                response = PwgGenericProxy<PwgImageRateProxyResponse>.Post(
+                    PwgConfigProxy.PwgServeurUriBuilder.Uri,
+                    data.ToString());
+            }
+            catch (Exception ex)
+            {
+                throw new PwgProxyException("pwg_images_rate", ex);
+            }
+
+            return response;
+        }
+
+    }
+
+}
+
Index: /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 3860)
+++ /extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 3861)
@@ -8,4 +8,17 @@
 namespace Com.Piwigo.Lib.Proxy.Response
 {
+
+    [Serializable()]
+    [XmlRoot(ElementName = "rsp")]
+    public class PwgImageRateProxyResponse : PwgBaseProxyReponse
+    {
+        [XmlElement("count")]
+        public Int32 Count { get; set; }
+        [XmlElement("average")]
+        public String Average { get; set; }
+        [XmlElement("stdev")]
+        public String Stdev { get; set; }
+    }
+
     [Serializable()]
     [XmlRoot(ElementName = "categorie")]
@@ -63,3 +76,4 @@
         public PwgImageListProxyResponse ImageList { get; set; }
     }
+
 }
Index: /extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs
===================================================================
--- /extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs	(revision 3860)
+++ /extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs	(revision 3861)
@@ -2,4 +2,5 @@
 using System.Collections.Generic;
 using System.Text;
+using System.Globalization;
 
 using Com.Piwigo.Lib.DTO;
@@ -13,4 +14,67 @@
     static public class PwgImagesService
     {
+        static public PwgImageRate RateImage(Int32 imageId, Int32 imageRate)
+        {
+            PwgImageRate returnValue = new PwgImageRate();
+
+            try
+            {
+                PwgImageRateProxyResponse response = PwgImagesProxy.pwg_images_rate(imageId, imageRate);
+
+                if (response.Retour != PwgBaseProxyReponseRetourEnum.Ok)
+                {
+                    if (response.Erreur != null)
+                    {
+                        throw new PwgServiceException("RateImage, the server has return the error.",
+                            response.Erreur.Code,
+                            response.Erreur.Message);
+                    }
+                    else
+                    {
+                        throw new PwgServiceException("RateImage : a error occurs during server process.");
+                    }
+                }
+                else
+                {
+                    returnValue = ConvertProxyResponseToDTO(response);
+                }
+            }
+            catch (PwgProxyException ex)
+            {
+                throw new PwgServiceException("RateImage : a error is raised by proxy.", ex);
+            }
+            return returnValue;
+        }
+
+        /// <summary>
+        /// private: convert response to dto object
+        /// </summary>
+        /// <param name="response"></param>
+        /// <param name="session"></param>
+        static public PwgImageRate ConvertProxyResponseToDTO(PwgImageRateProxyResponse response)
+        {
+            PwgImageRate returnValue = new PwgImageRate();
+            Double aDouble = 0;
+            NumberStyles style = NumberStyles.AllowDecimalPoint;
+            CultureInfo en_us = CultureInfo.CreateSpecificCulture("en-US");
+
+            returnValue.Count = response.Count;
+
+            returnValue.Stdev = 0.0 ;
+            if (Double.TryParse(response.Stdev, style, en_us, out aDouble))
+            {
+                returnValue.Stdev = aDouble;
+            }
+
+            returnValue.Average = 0.0;
+            if (Double.TryParse(response.Average, style, en_us, out aDouble))
+            {
+                returnValue.Average = aDouble;
+            }
+
+
+            return returnValue;
+        }
+
         /// <summary>
         /// private: convert response to dto object
Index: /extensions/PiwigoLib/TestPiwigoLib/Form1.cs
===================================================================
--- /extensions/PiwigoLib/TestPiwigoLib/Form1.cs	(revision 3860)
+++ /extensions/PiwigoLib/TestPiwigoLib/Form1.cs	(revision 3861)
@@ -65,10 +65,11 @@
                 //List<PwgCategory> lstCat = PwgCategoriesService.GetAdminListOfCategory(); 
 
-                Int32 newid = 0;
-                String msg = String.Empty;
-                Boolean rc = PwgCategoriesService.AddCategory("test_cat", 1, ref  newid, ref msg);
-                Console.WriteLine(String.Format("newid : {0} message : {1}", newid,msg));
-                rc = PwgCategoriesService.UpdateCategoryInfo(newid, "test2", "rename cat");
+                //Int32 newid = 0;
+                //String msg = String.Empty;
+                //Boolean rc = PwgCategoriesService.AddCategory("test_cat", 1, ref  newid, ref msg);
+                //Console.WriteLine(String.Format("newid : {0} message : {1}", newid,msg));
+                //rc = PwgCategoriesService.UpdateCategoryInfo(newid, "test2", "rename cat");
 
+                PwgImageRate imgRate = PwgImagesService.RateImage(1, 5);
 
                 sess = PwgSessionService.Logout();
