Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C显示缩略图_C#_Image_Thumbnails - Fatal编程技术网

C# 用C显示缩略图

C# 用C显示缩略图,c#,image,thumbnails,C#,Image,Thumbnails,我正在使用C处理相册查看器。作为应用程序的一部分,我需要将所选文件夹的所有图像显示为缩略图。我不知道如何创建缩略图 任何代码、链接或建议都会非常有帮助。谢谢。检查一下。它可能会帮助你。。。代码根据文本框中提供的图像创建图像对象。使用Image.GetThumbnailImage,代码然后创建一个大小为100*100的缩略图。检查。它可能会帮助你。。。代码根据文本框中提供的图像创建图像对象。使用Image.GetThumbnailImage,代码然后创建一个大小为100*100的缩略图。我向您推荐

我正在使用C处理相册查看器。作为应用程序的一部分,我需要将所选文件夹的所有图像显示为缩略图。我不知道如何创建缩略图


任何代码、链接或建议都会非常有帮助。谢谢。

检查一下。它可能会帮助你。。。代码根据文本框中提供的图像创建图像对象。使用Image.GetThumbnailImage,代码然后创建一个大小为100*100的缩略图。

检查。它可能会帮助你。。。代码根据文本框中提供的图像创建图像对象。使用Image.GetThumbnailImage,代码然后创建一个大小为100*100的缩略图。

我向您推荐我过去使用的一种方法:使用ListView并在关联的ImageList中动态加载图像。您可以使用rdkleine提出的策略以缩略图形式加载图像。您必须遵循的重要原则是,如果用户无法真正看到图像,则不要加载所有图像。使用listview可以通过设置VirtualMode=true来实现这一点,并且仅当图像实际显示时才提供图像。

我建议您使用我过去使用的一种方法:使用listview并在关联的ImageList中动态加载图像。您可以使用rdkleine提出的策略以缩略图形式加载图像。您必须遵循的重要原则是,如果用户无法真正看到图像,则不要加载所有图像。使用listview,您可以通过设置VirtualMode=true来实现这一点,并仅在实际显示图像时才提供图像

public System.Drawing.Image GetThumbnailImage(int thumbWidth, int thumbHeight, System.Drawing.Image.GetThumbnailImageAbort callback, System.IntPtr callbackData)
    Member of System.Drawing.Image

Summary:
Returns a thumbnail for this System.Drawing.Image.

Parameters:
thumbWidth: The width, in pixels, of the requested thumbnail image.
thumbHeight: The height, in pixels, of the requested thumbnail image.
callback: A System.Drawing.Image.GetThumbnailImageAbort delegate. In GDI+ version 1.0, the delegate is not used. Even so, you must create a delegate and pass a reference to that delegate in this parameter.
callbackData: Must be System.IntPtr.Zero.

Returns:
An System.Drawing.Image that represents the thumbnail.
[HttpPost]
    public PartialViewResult DisplayGalleryThumbs(string galleryId)
    {
        int pageNumber = Convert.ToInt32(galleryId.Split('_')[2]);
        Guid feedId = new Guid(galleryId.Split('_')[1]);
        var images = _feedDomain.ShowPostById(feedId.ToString()).Images;

        int totalNumberOfPages = CountNumberOfPages(images);

        string action = galleryId.Split('_')[3];

        var dict = new Dictionary<int, List<FeedImage>>();
        var pagedImages = new List<FeedImage>();
        int i = 1;
        int a = 1;
        foreach (FeedImage image in images)
        {
            pagedImages.Add(image);
            if (i % NumberOfImagesPerPage == 0)
            {
                dict.Add(a, pagedImages);
                a++;
                pagedImages=new List<FeedImage>();
            }
            if (i >= images.Count()) dict.Add(a, pagedImages);
            i++;
        }
        if (action=="next")
        {
            pageNumber += 1;
        }
        else
        {
            pageNumber -= 1;
        }


        var galleryModel = new FeedThumbGalleryModel
                               {
                                   Images = dict.FirstOrDefault(c => c.Key == pageNumber).Value,
                                   FeedId = feedId,
                                   PageNumber = pageNumber,
                                   NumberOfPages = totalNumberOfPages,
                                   NumberOfImagesPerPage = NumberOfImagesPerPage,
                                   TotalNumberOfImages = images.Count()
                               };

        return PartialView("~/Views/Feed/_DisplayGalleryThumbs.cshtml", galleryModel);
    }




@helper Render(FeedThumbGalleryModel model)
{

}

这是一个使用MVC3的用于缩略图分页预览的ajax解决方案。我用这个作为我的新闻提要,通过图像库列出。不要介意在视图中大量使用表,我的UI有点有限

{

}


这是一个使用MVC3的用于缩略图分页预览的ajax解决方案。我用这个作为我的新闻提要,通过图像库列出。不要介意在视图中大量使用表格,我的用户界面有点有限。

你被卡在哪里了?获取文件夹的文件列表、从文件中读取图像、创建图像的缩略图版本、显示缩略图,等等?@hans:创建图像的缩略图版本您在哪里?获取文件夹的文件列表,从文件中读取图像,创建该图像的缩略图版本,显示该缩略图,还有什么?@hans:创建一个缩略版本的图像你能告诉我们zip包含什么吗?这样人们就不必盲目地下载它了?我已经将链接改为包含zip文件的实际文章。看起来更合适。@Yoko:没问题。对zip文件的盲目链接似乎会让一些人感到不安。通过这种方式,如果他们感兴趣,他们可以签出文章,然后抓取包含完整源代码的zip文件。你能告诉我zip文件包含哪些内容,这样人们就不必盲目下载它吗?我已将链接更改为包含zip文件的实际文章。看起来更合适。@Yoko:没问题。对zip文件的盲目链接似乎会让一些人感到不安。通过这种方式,如果他们感兴趣,他们可以查看文章,然后获取包含完整源代码的zip文件。
if (model.Images != null)
{

    string linkNext = "linkNext_" + model.FeedId + "_" + model.PageNumber + "_next";
    string linkPrev = "linkPrev_" + model.FeedId + "_" + model.PageNumber + "_prev";

    string thumbFeedId = "feedThumbDiv_" + model.FeedId;
    <div id="@thumbFeedId">
        <table>
            <tr>
                <td style="width: 30px;vertical-align: top;">
                    @if (model.NumberOfPages > 1)
                    {
                        if (model.PageNumber <= model.NumberOfPages && model.PageNumber > 1 || model.PageNumber == model.NumberOfPages)
                        {
                            <a class="page-action" href="#" id="@linkPrev">Prev</a>
                        }  
                    }
                </td>
                <td style="width: 120px;vertical-align: top">
                    @if (model.NumberOfPages>1)
                    {
                         for (int a = 1; a <= model.NumberOfPages; a++)
                         {
                             int currentPage = a - 1;
                             string pageLink = "linkNext_" + model.FeedId + "_" + currentPage + "_next";
                             string classname = a==model.PageNumber ? "page-number-list" : "page-number-list1";

                             <a href="#" id="@pageLink" class="@classname">@a</a>
                        }
                    }

                </td>
                <td style="width: 220px;vertical-align: top;">
                        @if (model.PageNumber < model.NumberOfPages)
                        {
                            <a class="page-action" href="#" id="@linkNext">Next</a>
                        }
                </td>
                <td style="width: 150px;vertical-align: top;">
                    @{var thisId = "SeeAll_" + model.FeedId;}
                    @if (model.TotalNumberOfImages > 12)
                    {
                        <a id="@thisId" class="view-all">View All</a>
                    }

                </td>
                <td style="vertical-align: top">
                    <div class="number-of-images">
                       @model.TotalNumberOfImages images  
                    </div>

                </td>
            </tr>

            <tr>
                <td colspan="5">
                    <div style="width: 660px;padding-top: 10px">
                        @{int i = 1;}
                        @foreach (FeedImage m in model.Images)
                        {
                            string thumbThumb = ConfigurationManager.AppSettings["DisplayThumbPath"] + m.ImageId;
                            string imageUrl = "/feed/DisplayImage/" + model.FeedId + "_" + m.ImageId;

                            <div class="thumbnail image">
                                <a class='show-image' href="@imageUrl">
                                    <img border="0" class="image"  src="@thumbThumb" width="125" height="125" alt="" />
                                </a>
                            </div>

                            if (i % model.NumberOfImagesPerPage == 0)
                            {
                                break;
                            }
                            i++;
                        }
                        <br/>
                    </div>
                </td>

            </tr>
        </table>


    </div>

}
public class FeedImage
{

    public Guid ImageId { get; set; }
    public string ImageUrl { get; set; }
    public string ImageName { get; set; }
    public double ImageSize { get; set; }
    public string FileExtension { get; set; }
    public string ImageType { get; set; }
    public FeedPost Post { get; set; }
    public List<FeedLike> Likes { get; set; }
    public List<FeedComment> Comments { get; set; }
    public DateTime DateCreated { get; set; }
    public string DateCreatedIso8601 { get; set; }
}

private int CountNumberOfPages(List<FeedImage> images)
    {
        if (images == null) return 0;

        return (images.Count() + NumberOfImagesPerPage - 1) / NumberOfImagesPerPage;
    }

$("[class='page-action']").live('click', function () {
    var feedArr = $(this).attr('id').split('_');
    var thisDivId = '#feedThumbDiv_' + feedArr[1];

    $.post('/Feed/DisplayGalleryThumbs', { galleryId: $(this).attr('id') },
            function (html) {
                $(thisDivId).replaceWith(html);
            });
    return false;
});