/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Thumbnails
Fra : Lars HT


Dato : 06-01-05 10:48

Hej.

Jeg er ved at lave en billedbrowser til at rename diverse billeder og leder
derfor efter en komponent eller noget kode, som kan lave thumbnails af jpg,
bmp, ico (og gerne flere) billeder. Hurtighed er et must.

Jeg har desuden nogle avi og mov-filer. Hvordan får jeg vist første frame
som en thumbnail?

Lars



 
 
Thor (06-01-2005)
Kommentar
Fra : Thor


Dato : 06-01-05 22:25

Hej Lars

Jeg har en kodestump her der laver thumbnails på et Image, som du er
velkommen til at bruge


function filelist(dir, mask : string; att : integer) : tstringlist;
var ts : tsearchrec; i, dos : integer;
strl : tstringlist;
begin
strl := tstringlist.Create;
strl.Sorted := true;
chdir(dir);
dos := findfirst(mask,att, ts);
while dos = 0 do
begin
//if pos(, ts.Name) =0 then
strl.add(formatfloat('0000000000', ts.Time)+ts.Name);
dos := findnext(ts);
end;
findclose(ts);
result := tstringlist.Create;
for i := 0 to strl.count-1
do result.insert(0, copy(strl[i],11,50));
strl.Free;
chdir('..');
end;


procedure ShowImage(filename : string; px, py, maxdim : integer; image :
timage);
var jp : tjpegimage;
dim, h,w : integer;
ratio : real;
begin
jp := tjpegimage.Create;
jp.loadfromfile(filename);
dim := round(max(jp.height, jp.width));
ratio := maxdim/dim;
w := round(jp.width*ratio);
h:= round(jp.height*ratio);
with image, canvas do
begin
application.ProcessMessages;
stretchdraw(rect(px, py, px+w, py+h), jp);
update;
application.ProcessMessages;
end;
jp.Free;
end;

var strl : tstringlist;

procedure ShowImages(dir : string; dim : integer; image : timage);
var t, x,y, i, j, maxi,maxj : integer;
begin
strl := filelist(dir, '*.jpg', faArchive);
with image do
begin
picture.graphic := nil;
canvas.rectangle(1,1,width, height);
end;


maxi := image.Width div dim;
maxj := image.height div dim;
t := 0;

for j := 0 to maxj-1 do
for i := 0 to maxi-1 do
begin
x := i*(10+dim);
y := j*(10+dim);
if t < strl.count then
showimage(dir+'\'+strl[t], x,y, dim, image);
inc(t);
end;

end;



"Lars HT" <FJERNaslaktoke@yahoo.NREJFdk> skrev i en meddelelse
news:crj1d0$nco$1@news.net.uni-c.dk...
> Hej.
>
> Jeg er ved at lave en billedbrowser til at rename diverse billeder og
> leder
> derfor efter en komponent eller noget kode, som kan lave thumbnails af
> jpg,
> bmp, ico (og gerne flere) billeder. Hurtighed er et must.
>
> Jeg har desuden nogle avi og mov-filer. Hvordan får jeg vist første frame
> som en thumbnail?
>
> Lars
>
>



Lars HT (06-01-2005)
Kommentar
Fra : Lars HT


Dato : 06-01-05 22:34


"Thor" <thor@thor.thor> wrote in message
news:crka0h$25ge$1@news.cybercity.dk...
> Hej Lars
>
> Jeg har en kodestump her der laver thumbnails på et Image, som du er
> velkommen til at bruge
>
>

Tusind tak!

Virker det også på andre filer end jpg?

Lars



Toke Eskildsen (07-01-2005)
Kommentar
Fra : Toke Eskildsen


Dato : 07-01-05 09:55

Lars HT wrote:

> Jeg er ved at lave en billedbrowser til at rename diverse billeder
> og leder derfor efter en komponent eller noget kode, som kan lave
> thumbnails af jpg, bmp, ico (og gerne flere) billeder. Hurtighed
> er et must.

JPEG kan have indlejrede thumbnails, men jeg har ikke erfaring med at
udtrække dem og bruge dem. Under antagelse af at du bruger Delphi vil
jeg til gengæld henvise til TJPEGImage.Scale, der giver en markant
forøgelse af hastigheden, når man ikke har brug for at få vist det
fulde billede.

Med Scale angiver du om du kan nøjes med halvdelen, en kvartdel eller
en ottendedel af billedet, både horisontalt og vertikalt. Dette sparer
JPEG dekoderen for henholdsvis 3/4, 15/16 og 63/64 af arbejdet. Hele
filen skal stadig hentes, hvilket tager tid, men det er stadig en del
hurtigere end at dekode alle data og skalere bagefter.

Eftersom BMP normalt blot er rå data, burde man kunne lave lignende
tricks der. Men det er nok begrænset hvor meget der vindes, da formatet
er trivielt at dekode.

Thor (09-01-2005)
Kommentar
Fra : Thor


Dato : 09-01-05 22:33

Hej Toke

Tak for et godt tip - scale

mvh Thomas Riedel



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste