[singlepic=18205]

动机

生活变好了,显示器也不只是用来看的了。面子工作越来越重要,有些安放在走廊里的显示器,需要承担起播放幻灯片的工作…
MSRA走廊里有不少19寸宽屏显示器(好几年前就有,那时候19寸是巨大的),后面连着Dell的台式机,装上Windows Server 2003,然后做一件事情——循环放照片。

[singlepic=18206]

Aha,我记得有一张照片来着…

功能

软件的功能是,每次可以指定一个文件夹加入播放列表,加入时可以指定是否包含其子文件夹的内容,一旦选择包含子文件夹,则此文件夹下全部文件都会被加入播放列表。
播放列表会自动存储在相同目录下(dir.ini),下次启动时会自动继续播放。
常见播放选项,如切换时间、重新开始、暂停、继续、随机播放等,都在支持范围内。
发布文件中包含一个exe和一个scr,文件,其中scr文件可以拷贝至C:\Windows\System32中,这样就可以在Windows屏幕保护中使用。

下载

More,自己试试看~
http://download.nocoo.us/Download/NocooTools/PicScreenSaver/PicScreenSaver_Release_1.0.rar

发布一款小工具吧。设想这样一种需求:
有时候你可能想写一份教程,关于一个东西该怎么配置,可能有多个关键步骤。当然屏幕录像是最好的,不过比较大嘛。你可以用Print Screen去获取每次一张全屏幕图像,然后Photoshop到合适大小,只给人看到工作窗口,而看不到别的(因为可能涉及到隐私,比如一封给朋友没写完的抱怨老板邮件的标题栏之类的)。多麻烦。
这款小工具,打开之后就显示一个窗口,最小化就会缩在任务栏不再烦你。需要截图的时候,按下组合键:Ctrl + F12,就会把截图放在桌面一个叫做ScreenShots的文件夹里,截图只会包含当前的工作窗口,不包含别的东西。
当然,你可以一边操作一边截图,图像是按照时间戳取名字的,不会重复,每按一次快捷键就会截一张图像,你的操作,不会被打断。
对了,图片会保存成JPG格式,默认100%质量,可以在界面里设置质量,你可以按照需求降低质量以便缩小文件大小。

效果是这样的:
[singlepic=18109,650,487]

P.S. 我的Vista是正版的,别指责我。

下载:http://download.nocoo.us/Download/NocooTools/ScreenCapture/Release.rar

程序员懒吧?呵呵。
只要能找到一个好用的,我是绝对不会自己写一个出来的。因为WordPress的图库插件NextGEN Gallery破算法不能压缩太大的文件,PHP执行内存不足,同样的照片跑在同一环境下的Gallery2处理起来很轻松,还能一下执行N张呢…
没办法只好先把照片压缩下在传上去了。找个好几个批量压缩软件都不如意,没办法只好自己写一个了。

界面是这样子的:

[singlepic=15854,700,510]

核心算法其实非常简单:

[code=’c#’]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.IO;

namespace JPGCompact
{
public partial class MainForm : Form
{
///

/// 保存JPG时用
///

/// 文件类型 /// 得到指定mimeType的ImageCodecInfo
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo ici in CodecInfo)
{
if (ici.MimeType == mimeType) return ici;
}
return null;
}

///

/// 保存为JPEG格式,支持压缩质量选项
///

/// 原始位图 /// 新文件地址 /// 压缩质量,越大越好,文件也越大(0-100) /// 成功标志
public static bool SaveAsJPEG(Bitmap bmp, string FileName, int Qty)
{
try
{
EncoderParameter p;
EncoderParameters ps;
ps = new EncoderParameters(1);
p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
ps.Param[0] = p;
bmp.Save(FileName, GetCodecInfo(“image/jpeg”), ps);
return true;
}
catch
{
return false;
}
}

private bool CompressPicture(string sourcePath, string targetPath)
{
try
{
// 大小比率
double sizeRate = double.Parse(cbSizeRate.Text) / 100;
// 品质比率
int qualityRate = int.Parse(cbQualityRate.Text);

Image sourceImage = Image.FromFile(sourcePath);
// 调整图片大小
Bitmap bmp = new Bitmap(
sourceImage,
new Size(
(int)(sourceImage.Width * sizeRate),
(int)(sourceImage.Height * sizeRate)));
// 压缩图片
SaveAsJPEG(bmp, targetPath, qualityRate);

GC.Collect();

return true;
}
catch
{
return false;
}
}
}
}
[/code]

比较有技术含量的是那个Exif信息的读取,一会儿我写一篇说说那个怎么做。

下载地址:http://download.nocoo.us/Download/Archive/JPGCompact.rar