Index: extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs	(revision 3827)
+++ extensions/PiwigoLib/PiwigoLib/DTO/PwgImage.cs	(revision 3827)
@@ -0,0 +1,23 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+
+
+namespace Com.Piwigo.Lib.DTO
+{
+
+    public class PwgImage
+    {
+        public Int32 Id { get; set; }
+        public Int32 Width { get; set; }
+         public Int32 Height { get; set; }
+        public String File { get; set; }
+        public Uri UrlThunb { get; set; }
+        public Uri UrlElement { get; set; }
+        public Uri UrlHighDef { get; set; }
+        public Int64 Counter { get; set; }
+
+        public List<PwgTag> Tags { get; set; }
+
+    }
+}
Index: extensions/PiwigoLib/PiwigoLib/DTO/PwgTag.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/DTO/PwgTag.cs	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/DTO/PwgTag.cs	(revision 3827)
@@ -9,5 +9,5 @@
     public class PwgTag
     {
-        public Int16  Id      { get; set; }
+        public Int32  Id      { get; set; }
         public String Name    { get; set; }
         public String UrlName { get; set; }
Index: extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj
===================================================================
--- extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/PiwigoLib.csproj	(revision 3827)
@@ -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>
@@ -47,4 +47,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="DTO\PwgImage.cs" />
     <Compile Include="DTO\Helper\PwgEnumHelper.cs" />
     <Compile Include="DTO\PwgSessionStatusEnum.cs" />
@@ -52,5 +53,8 @@
     <Compile Include="DTO\PwgSession.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Proxy\Helper\PwgProxyReponseHelper.cs" />
     <Compile Include="Proxy\PwgTagsProxy.cs" />
+    <Compile Include="Proxy\Response\PwgCategoriesProxyResponse.cs" />
+    <Compile Include="Proxy\Response\PwgImagesProxyResponse.cs" />
     <Compile Include="Proxy\Response\PwgSessionProxyResponse.cs" />
     <Compile Include="Proxy\Response\PwgBaseProxyReponse.cs" />
@@ -61,4 +65,5 @@
     <Compile Include="Proxy\PwgProxyException.cs" />
     <Compile Include="Proxy\PwgSessionProxy.cs" />
+    <Compile Include="Service\PwgImagesService.cs" />
     <Compile Include="Service\PwgTagsService.cs" />
     <Compile Include="Service\PwgServiceException.cs" />
Index: extensions/PiwigoLib/PiwigoLib/Proxy/Helper/PwgProxyReponseHelper.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/Helper/PwgProxyReponseHelper.cs	(revision 3827)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/Helper/PwgProxyReponseHelper.cs	(revision 3827)
@@ -0,0 +1,39 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Web;
+
+namespace Com.Piwigo.Lib.Proxy.Helper
+{
+    public static class PwgProxyReponseHelper<T>
+    {
+        public static void buildQueryFromArray(List<T> values, String paramName, ref Boolean firstOcc, StringBuilder queryStringBuilder)
+        {
+            String FormatString = String.Empty;
+            if (values != null)
+            {
+                if (values.Count == 1)
+                {
+                    FormatString = "{0}={1}";
+                }
+                else
+                {
+                    FormatString = "{0}[]={1}";
+                }
+                if (firstOcc != true)
+                {
+                    FormatString = String.Format("&{0}", FormatString);
+                }
+
+                foreach (T occurance in values)
+                {
+                    queryStringBuilder.AppendFormat(FormatString, paramName, HttpUtility.UrlEncode(occurance.ToString().ToLower()));
+                    firstOcc = false;
+                }
+
+            }
+
+        }
+    }
+}
Index: extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/PwgGenericProxy.cs	(revision 3827)
@@ -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/PwgTagsProxy.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/PwgTagsProxy.cs	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/PwgTagsProxy.cs	(revision 3827)
@@ -6,4 +6,5 @@
 using System.Web;
 using Com.Piwigo.Lib.Proxy.Response;
+using Com.Piwigo.Lib.Proxy.Helper;
 
 namespace Com.Piwigo.Lib.Proxy
@@ -48,4 +49,106 @@
         }
 
+        static public PwgImagesProxyResponse pwg_tags_getImages(List<Int32> tagsId,		
+                                                                    List<String>    tagsUrlName,
+                                                                    List<String>    tagsName,
+                                                                    Boolean?         tagModeAnd,
+                                                                    Int32?           perPage,
+                                                                    Int32?           Page,
+                                                                    Int32?          Order,
+                                                                    Int32?           minRate,
+                                                                    Int32?           maxRate,
+                                                                    Int32?           minHit,
+                                                                    Int32?           maxHit,
+                                                                    DateTime?        minDateAvailable,
+                                                                    DateTime?        maxDateAvailable,
+                                                                    DateTime?        minDateCreated,
+                                                                    DateTime?        maxDateCreated,
+                                                                    Int32?           minRatio,
+                                                                    Int32?           maxRatio,
+                                                                    Boolean?         withThumbnail)
+        {
+            PwgImagesProxyResponse response = null;
+            try
+            {
+                StringBuilder data = new StringBuilder();
+                Boolean firstOcc = true;
+                data.AppendFormat("method={0}","pwg.tags.getImages");
+                firstOcc = false;
+                PwgProxyReponseHelper<Int32>.buildQueryFromArray(tagsId, "tag_id", ref firstOcc, data);
+                PwgProxyReponseHelper<String>.buildQueryFromArray(tagsUrlName, "tag_url_name", ref firstOcc, data);
+                PwgProxyReponseHelper<String>.buildQueryFromArray(tagsName, "tag_name", ref firstOcc, data);
+
+                if (tagModeAnd.HasValue)
+                {
+                    data.Append("&tag_mode_and=" + HttpUtility.UrlEncode(tagModeAnd.ToString().ToLower()));
+                }
+                if (perPage.HasValue)
+                {
+                    data.Append("&per_page=" + HttpUtility.UrlEncode(perPage.ToString().ToLower()));
+                }
+                if (Page.HasValue)
+                {
+                    data.Append("&page=" + HttpUtility.UrlEncode(Page.ToString().ToLower()));
+                }
+                if (Order.HasValue)
+                {
+                    data.Append("&order=" + HttpUtility.UrlEncode(Order.ToString().ToLower()));
+                }
+                if (minRate.HasValue)
+                {
+                    data.Append("&f_min_rate=" + HttpUtility.UrlEncode(minRate.ToString().ToLower()));
+                }
+                if (maxRate.HasValue)
+                {
+                    data.Append("&f_max_rate=" + HttpUtility.UrlEncode(maxRate.ToString().ToLower()));
+                }
+                if (minHit.HasValue)
+                {
+                    data.Append("&f_min_hit=" + HttpUtility.UrlEncode(minHit.ToString().ToLower()));
+                }
+                if (maxHit.HasValue)
+                {
+                    data.Append("&f_max_hit=" + HttpUtility.UrlEncode(maxHit.ToString().ToLower()));
+                }
+                if (minDateAvailable.HasValue)
+                {
+                    data.Append("&f_min_date_available=" + HttpUtility.UrlEncode(minDateAvailable.ToString().ToLower()));
+                }
+                if (maxDateAvailable.HasValue)
+                {
+                    data.Append("&f_max_date_available=" + HttpUtility.UrlEncode(maxDateAvailable.ToString().ToLower()));
+                }
+                if (minDateCreated.HasValue)
+                {
+                    data.Append("&f_min_date_created=" + HttpUtility.UrlEncode(minDateCreated.ToString().ToLower()));
+                }
+                if (maxDateCreated.HasValue)
+                {
+                    data.Append("&f_max_date_created=" + HttpUtility.UrlEncode(maxDateCreated.ToString().ToLower()));
+                }
+                if (minRatio.HasValue)
+                {
+                    data.Append("&f_min_ratio=" + HttpUtility.UrlEncode(minRatio.ToString().ToLower()));
+                }
+                if (maxRatio.HasValue)
+                {
+                    data.Append("&f_max_ratio=" + HttpUtility.UrlEncode(maxRatio.ToString().ToLower()));
+                }
+                if (withThumbnail.HasValue)
+                {
+                    data.Append("&f_with_thumbnail=" + HttpUtility.UrlEncode(withThumbnail.ToString().ToLower()));
+                }
+
+                response = PwgGenericProxy<PwgImagesProxyResponse>.Post(
+                                PwgConfigProxy.PwgServeurUriBuilder.Uri,
+                                data.ToString());
+            }
+            catch (Exception ex)
+            {
+                throw new PwgProxyException("pwg_tags_getImages", ex);
+            }
+            return response;
+
+        }
         static public PwgTagsProxyResponse pwg_tag_add(string tagName)
         {
Index: extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs	(revision 3827)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgCategoriesProxyResponse.cs	(revision 3827)
@@ -0,0 +1,34 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using Com.Piwigo.Lib.DTO;
+
+namespace Com.Piwigo.Lib.Proxy.Response
+{
+    [Serializable()]
+    [XmlRoot(ElementName = "categories")]
+    public class PwgCategoryProxyResponse
+    {
+        [XmlAttribute(AttributeName = "id")]
+        public Int32 Id { get; set; }
+        [XmlAttribute(AttributeName = "name")]
+        public String Name { get; set; }
+        [XmlAttribute(AttributeName = "url_name")]
+        public String UrlName { get; set; }
+        [XmlAttribute(AttributeName = "counter")]
+        public Int64 Counter { get; set; }
+        [XmlAttribute(AttributeName = "url")]
+        public String UrlTag { get; set; }
+    }
+
+    [Serializable()]
+    [XmlRoot(ElementName = "rsp")]
+    public class PwgcategoriesProxyResponse : PwgBaseProxyReponse
+    {
+        [XmlArray("categories")]
+        [XmlArrayItem("category")]
+        public PwgCategoryProxyResponse[] Categories { get; set; }
+    }
+}
Index: extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 3827)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgImagesProxyResponse.cs	(revision 3827)
@@ -0,0 +1,61 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using Com.Piwigo.Lib.DTO;
+
+namespace Com.Piwigo.Lib.Proxy.Response
+{
+    [Serializable()]
+    [XmlRoot(ElementName = "categorie")]
+    public class PwgImageProxyResponse
+    {
+        [XmlAttribute(AttributeName = "id")]
+        public Int32 Id { get; set; }
+        [XmlAttribute(AttributeName = "width")]
+        public Int32 Width { get; set; }
+        [XmlAttribute(AttributeName = "height")]
+        public Int32 Height { get; set; }
+        [XmlAttribute(AttributeName = "file")]
+        public String File { get; set; }
+        [XmlAttribute(AttributeName = "tn_url")]
+        public String UrlThunb { get; set; }
+        [XmlAttribute(AttributeName = "element_url")]
+        public String UrlElement { get; set; }
+        [XmlAttribute(AttributeName = "high_url")]
+        public String UrlHighDef { get; set; }
+        [XmlAttribute(AttributeName = "hit")]
+        public Int64 Counter { get; set; }
+
+        [XmlArray("tags")]
+        [XmlArrayItem("tag")]
+        public PwgTagProxyResponse[] Tags { get; set; }
+
+    }
+
+    [Serializable()]
+    [XmlRoot(ElementName = "images")]
+    public class PwgImageListProxyResponse
+    {
+        [XmlAttribute("page")]
+        public Int32 Page;
+        [XmlAttribute("per_page")]
+        public Int32 PerPage;
+        [XmlAttribute("count")]
+        public Int32 Count;
+
+        [XmlElement("image", typeof(PwgImageProxyResponse))]
+        public PwgImageProxyResponse[] Images { get; set; }
+
+
+    }
+
+    [Serializable()]
+    [XmlRoot(ElementName = "rsp")]
+    public class PwgImagesProxyResponse : PwgBaseProxyReponse
+    {
+        [XmlElement("images")]
+        public PwgImageListProxyResponse ImageList { get; set; }
+    }
+}
Index: extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/Proxy/Response/PwgTagsProxyResponse.cs	(revision 3827)
@@ -13,5 +13,5 @@
     {
         [XmlAttribute(AttributeName = "id")]
-        public Int16 Id { get; set; }
+        public Int32 Id { get; set; }
         [XmlAttribute(AttributeName = "name")]
         public String Name { get; set; }
Index: extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs	(revision 3827)
+++ extensions/PiwigoLib/PiwigoLib/Service/PwgImagesService.cs	(revision 3827)
@@ -0,0 +1,99 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Com.Piwigo.Lib.DTO;
+using Com.Piwigo.Lib.Proxy;
+using Com.Piwigo.Lib.Proxy.Response;
+using Com.Piwigo.Lib.DTO.Helper;
+
+namespace Com.Piwigo.Lib.Service
+{
+
+    static public class PwgImagesService
+    {
+        /// <summary>
+        /// private: convert response to dto object
+        /// </summary>
+        /// <param name="response"></param>
+        /// <param name="session"></param>
+        static public void ConvertProxyResponseToDTO(PwgImagesProxyResponse response,
+                                                      List<PwgImage> lstImage, 
+                                                      ref Int32 Page, ref Int32 PerPagee, ref Int32 Count)
+        {
+                ConvertProxyResponseToDTO(response.ImageList, lstImage, ref Page, ref PerPagee, ref Count);
+        }
+
+        /// <summary>
+        /// private: convert response to dto object
+        /// </summary>
+        /// <param name="response"></param>
+        /// <param name="session"></param>
+        static public void ConvertProxyResponseToDTO(PwgImageListProxyResponse response,
+                                                      List<PwgImage> lstImage, 
+                                                      ref Int32 Page, ref Int32 PerPagee, ref Int32 Count)
+        {
+            Page = response.Page;
+            PerPagee = response.PerPage;
+            Count = response.Count;
+
+            foreach (PwgImageProxyResponse respImg in response.Images)
+            {
+                lstImage.Add(ConvertProxyResponseToDTO(respImg));
+            }
+        }
+
+        /// <summary>
+        /// private: convert response to dto object
+        /// </summary>
+        /// <param name="response"></param>
+        /// <param name="session"></param>
+        static public PwgImage ConvertProxyResponseToDTO(PwgImageProxyResponse response)
+        {
+            PwgImage returnValue = new PwgImage();
+
+            try
+            {
+                returnValue.Counter = response.Counter;
+                returnValue.Id = response.Id;
+                returnValue.File = response.File;
+                returnValue.Height = response.Height;
+                returnValue.Width = response.Width;
+
+                if (String.IsNullOrEmpty(response.UrlElement))
+                {
+                    returnValue.UrlElement = null;
+                }
+                else
+                {
+                    returnValue.UrlElement = (new UriBuilder(response.UrlElement)).Uri;
+                }
+
+                if (String.IsNullOrEmpty(response.UrlThunb))
+                {
+                    returnValue.UrlThunb = null;
+                }
+                else
+                {
+                    returnValue.UrlThunb = (new UriBuilder(response.UrlThunb)).Uri;
+                }
+
+                if (String.IsNullOrEmpty(response.UrlHighDef))
+                {
+                    returnValue.UrlHighDef = null;
+                }
+                else
+                {
+                    returnValue.UrlHighDef = (new UriBuilder(response.UrlHighDef)).Uri;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                throw new PwgServiceException("ConvertProxyResponseToDTO : a error is raised when converting PwgTagProxyResponse.", ex);
+            }
+
+            return returnValue;
+        }
+    }
+}
Index: extensions/PiwigoLib/PiwigoLib/Service/PwgTagsService.cs
===================================================================
--- extensions/PiwigoLib/PiwigoLib/Service/PwgTagsService.cs	(revision 3821)
+++ extensions/PiwigoLib/PiwigoLib/Service/PwgTagsService.cs	(revision 3827)
@@ -140,4 +140,77 @@
         }
 
+        static public List<PwgImage> GetListOfImagesFormTags(List<Int32> tagsId,
+                                                            List<String> tagsUrlName,
+                                                            List<String> tagsName,
+                                                            Boolean? tagModeAnd,
+                                                            Int32? perPage,
+                                                            Int32? Page,
+                                                            Int32? Order,
+                                                            Int32? minRate,
+                                                            Int32? maxRate,
+                                                            Int32? minHit,
+                                                            Int32? maxHit,
+                                                            DateTime? minDateAvailable,
+                                                            DateTime? maxDateAvailable,
+                                                            DateTime? minDateCreated,
+                                                            DateTime? maxDateCreated,
+                                                            Int32? minRatio,
+                                                            Int32? maxRatio,
+                                                            Boolean? withThumbnail,
+                                                            ref Int32 PageReturned,
+                                                            ref Int32 PerPageeReturned,
+                                                            ref Int32 CountReturned)
+        {
+            List<PwgImage> returnValue = new List<PwgImage>();
+
+            try
+            {
+                PwgImagesProxyResponse response = PwgTagsProxy.pwg_tags_getImages(tagsId,
+                                                            tagsUrlName,
+                                                            tagsName,
+                                                            tagModeAnd,
+                                                            perPage,
+                                                            Page,
+                                                            Order,
+                                                            minRate,
+                                                            maxRate,
+                                                            minHit,
+                                                            maxHit,
+                                                            minDateAvailable,
+                                                            maxDateAvailable,
+                                                            minDateCreated,
+                                                            maxDateCreated,
+                                                            minRatio,
+                                                            maxRatio,
+                                                            withThumbnail);
+
+                if (response.Retour != PwgBaseProxyReponseRetourEnum.Ok)
+                {
+                    if (response.Erreur != null)
+                    {
+                        throw new PwgServiceException("GetListOfImagesFormTags, the server has return the error.",
+                            response.Erreur.Code,
+                            response.Erreur.Message);
+                    }
+                    else
+                    {
+                        throw new PwgServiceException("GetListOfImagesFormTags : a error occurs during server process.");
+                    }
+                }
+                else
+                {
+                    PwgImagesService.ConvertProxyResponseToDTO(response, returnValue,
+                                                            ref PageReturned,
+                                                            ref PerPageeReturned,
+                                                            ref CountReturned);
+                }
+            }
+            catch (PwgProxyException ex)
+            {
+                throw new PwgServiceException("GetListOfImagesFormTags : a error is raised by proxy.", ex);
+            }
+            return returnValue;
+        }
+
         /// <summary>
         /// private: convert response to dto object
Index: extensions/PiwigoLib/TestPiwigoLib/Form1.cs
===================================================================
--- extensions/PiwigoLib/TestPiwigoLib/Form1.cs	(revision 3821)
+++ extensions/PiwigoLib/TestPiwigoLib/Form1.cs	(revision 3827)
@@ -48,4 +48,13 @@
 
                 //List<PwgTag> lstTag = PwgTagsService.GetAdminListOfTag();
+                Int32 Page = 0;
+                Int32 PerPage = 0; 
+                Int32 Count = 0;
+
+                List<PwgImage> lstImg = PwgTagsService.GetListOfImagesFormTags(new List<Int32>() { 1, 7 },
+                    null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+                    ref Page, ref PerPage, ref Count);
+
+                Console.WriteLine("lstImg : Page " + Page.ToString() + " PerPage " + PerPage);
 
                 sess = PwgSessionService.Logout();
Index: extensions/PiwigoLib/TestPiwigoLib/app.config
===================================================================
--- extensions/PiwigoLib/TestPiwigoLib/app.config	(revision 3821)
+++ extensions/PiwigoLib/TestPiwigoLib/app.config	(revision 3827)
@@ -11,8 +11,5 @@
                 <value />
             </setting>
-            <setting name="pwdData" serializeAs="String">
-                <value />
-            </setting>
-            <setting name="serverUrlData" serializeAs="String">
+            <setting name="PwdData" serializeAs="String">
                 <value />
             </setting>
