请问做一个类似acdsee的软件时怎样实现缩略图查看呢?听说listview和panel里面放image可以实现,是怎么回事的吖?

解决方案 »

  1.   

    http://photo.nease.net/showpic_original.php?username=cheshen&pid=589724&_dir=%2F93672
      

  2.   

    这个是短小精悍,浏览快速,生成的缩图精美漂亮,能浏览常见的多种图像格式
    http://new.playicq.com/dispdocnew.php?id=4803
      

  3.   

    我用的办法是:
    加载一个Timage,让Autosize为true,加载图象,得到图象的长宽,
    再按比例缩小它。
    最后把得到的图象在窗体上显示出来。
      

  4.   

    to tomore:那个是用vc编写的吖
    to  h2yang(小青):如果是动态得到该目录下所有文件的缩略图呢?
      

  5.   

    用Delphi读取JPEG文件的缩览图--------------------------------------------------------------------------------  JPEG图像文件以高压缩比和高图像质量著称,市面上的图库光盘中的图像文件大都是JPEG格式的。怎样从一大堆JPEG文件中查找合适的图像呢?使用JPEG文件的缩览图就是其中方法之一。  在PhotoShop 4.0(或以上版本)的打开文件对话框中,当打开JPEG文件时,PhotoShop很快把它的缩览图显示出来。为什么PhotoShop能这么快地显示出JPEG文件的缩览图呢?  原来PhotoShop在保存JPEG文件时把它的缩览图也保存在文件里。PhotoShop定义了新的段FF ED,这个段保存了一个JPEG文件格式的缩览图,大图中有小图。FF ED段后两个字节是这个段的长度,在这个段里有缩览图的开始标志FF D8和结束标志FF D9,将这个段拷贝出来即可获得该图的缩览图。值得注意的是PhotoShop 4.0解出的缩览图,像素格式不是常规的RGB,而是BGR格式,所以还得加入BGR转为RGB的代码,转化过程是在内存里把B和R的位置交换。  下面是Delphi编写的快速读取PhotoShop 4.0(或以上版本)JPEG文件的缩览图的程序,程序用TFileStream读取JPEG文件的FF ED段,结合TmemoryStream、TJPEGimage, 返回BMP格式的缩览图。  function LoadThumb(filename:shortstring):TBitmap;  procedure BGR2RGB(var bmp:TBitmap);  var  x,y:integer; t:char; data:pchar;  begin  for y:=bmp.Height-1 downto 0 do  begin  data:=bmp.ScanLine[y];  for x:=0 to bmp.Width-1 do  begin  t:=data[x*3];  data[x*3]:=data[x*3+2];  data[x*3+2]:=t;  end;  end;  end;  var  fstream:Tfilestream; mstream:Tmemorystream;  j,i:word;data:pchar; buf:array [0..3] of byte;  filesize:DWORD; fjpg:Tjpegimage;bmp:Tbitmap;  begin  result:=nil;  fstream:=Tfilestream.create(filename,fmOpenRead);  //建立文件流,读JPEG文件  fstream.Seek(20,soFromBeginning); //FF ED段在文件的第20个字节处  fstream.Read(buf,sizeof(buf));  if PWORD(@buf[0])^=$EDFF then  begin  j:=buf[2]*256+buf[3]; //FF ED的大小,高位在前,低位在后  if j<1024 then //FF ED段的大小若为1024个字节则文件不包含缩览图,退出程序  begin  fstream.free;  exit;  end;  mstream:=TMemorystream.Create;//建立内存流  mstream.CopyFrom(fstream,j); //把FF ED段拷贝到mstream  data:=mstream.Memory;  for i:=300 to 700 do //找缩览图的开始标志FF D8  if PWORD(@data[i])^=$D8FF then break;  if i<700 then  begin  fjpg:=Tjpegimage.Create; //建立TJPEGimage 解出缩览图  bmp:=TBitmap.Create;  mstream.Position:=i;  fjpg.LoadFromStream(mstream);//fjpg读取mstream  bmp.Assign(fjpg); //JPEG转BMP  if PWORD(@data[i+57])^=$2e34 then //PhotoShop 4.0的缩览图  BGR2RGB(bmp); //BMP的像素格式BGR 而不是RGB,要把BGR转化为RGB  result:=bmp; //函数返回BMP  mstream.Free;  fjpg.Free; //释放Object  end;end;  fstream.free;  end;  可直接把Delphi 的Timage可视控件拖到Form上,用image.picture.bitmap:= LoadThumb(filename) 即可显示PhotoShop JPEG文件的缩览图。
      

  6.   

    http://www.limbyte.com/MYSEE.zip
    这是我用delphi做一个类似acdsee的程序查看缩略图
      

  7.   

    cnssk(小柯)luo521(黑暗中的舞者),很感谢你们吖