65.9K
CodeProject 正在变化。 阅读更多。
Home

用于创建有趣且完全可定制的 Web 照片库的应用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.47/5 (16投票s)

2006 年 10 月 9 日

LGPL3

2分钟阅读

viewsIcon

56707

downloadIcon

4638

一个使用插件生成页面的应用程序,用于创建有趣且完全可定制的 Web 照片库。

引言

此应用程序可用于在几分钟内从多个源图像生成HTML照片库。
您还可以半透明地在放大的图像上插入文本,定义其位置、大小、阴影,并可选择使用背景形状,如矩形或椭圆形,以及3D效果。
此外,您可以在目标放大图像上印上水印图像,定义透明度键、目标图像的百分比大小、透明度级别和位置。
您可以使用蒙版为图像(缩略图和/或放大图)添加角和形状。
您可以在格式之间转换图像。
最后,您可以创建一个有趣的阴影效果,比如在彩色或空白纸上放一张图片,从页面模板或其他来源选取颜色。
页面是使用用户可自定义的HTML模板生成的。

支持多种格式:JPG(具有可自定义的压缩级别)、GIF、PNG、WMF、TIFF、EXIT和ICO。

该工具外观美观,界面友好。
该应用程序通过使用DLL插件完全可扩展,以获得不同的HTML样式。

背景

此应用程序扩展了在我的上一篇文章中介绍的“批量图像”项目。

“扩展Web库”的目标用途与“批量图像”不同:虽然“批量图像”对于批量创建图像很有用,但使用“扩展Web库”您可以创建具有各种样式的HTML照片库。

使用插件的HTML样式

HTML生成是基于插件的。 任何人都可编写自己的插件以获得完全自定义的照片库样式。

实际上,我已经实现了三个基本插件,它们具有以下布局:标准表格、水平自动滚动框架和垂直自动滚动框架。

插件必须实现以下接口(`IPlugins`)

public interface IPlugin
{
    event EventHandler FinishWork;
    System.Windows.Forms.UserControl GetPluginInterface();
    string Name { get; }
    string Description { get; }
    Bitmap sample { get;}
    object Action(object data);
    void ThreadOperate(CParams.ThreadOperation operation);
    void SetParameters(List<CPARAMS> paramlist);
    void SetMainTemplate(List<STRING> before, List<STRING> after);
    void SetPagesTemplate(List<STRING>before, List<STRING> after);
    void SetDirs(string outputpath, string imagepath, 
		string thumbnailspath, string pagespath, string pagesextension);
    void Serialize(Stream myStream, ref IFormatter formatter);
    void DeSerialize(Stream myStream, ref IFormatter formatter);
}

当应用程序启动时,插件管理器(`Plugger`)检查“*Plugins*”目录中插件的存在

private void LoadPluginsFromAssemly(System.Reflection.Assembly assembly)
        {
            Type[] types = assembly.GetTypes();
            foreach (Type type in types)
            {
                if (type.IsPublic && !type.IsAbstract)
                {
                    Type typeInterface = type.GetInterface("IPlugin", true);

                    if (typeInterface != null)
                    {
                        ListItem listitem = new ListItem();
                        listitem.plugin = Activator.CreateInstance(type) as IPlugin;
                        listitem.filename = type.Module.ToString();

                        if (listitem.plugin == null)
                            continue;

                        listitem.plugin.FinishWork += new EventHandler(plugin_Evento);

                        PluginList.Add(listitem);
                    }
                }
            }
        }

感谢jonnynolimits对插件阅读的宝贵支持。

使用蒙版

您可以使用蒙版来获得很酷的图像效果。 蒙版是放在原始图像上的通用图像。 显然,您可以定义透明度键。

因此,这就是结果(使用水平框架插件),它就像一部电影。

您可以使用多种形状或来源快速创建新的蒙版图像。

演示库

标准表格

水平框架

垂直框架

外部链接

我将要编写一些用户文档。 关注此链接(实际上我正在编写用户指南)。

注释

请报告错误!

© . All rights reserved.