Thread Bild zentriert einpassen (2 answers)
Opened by pktm at 2012-05-22 21:46

topeg
 2012-05-22 22:32
#158485 #158485
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
So aus der holen Hand:
Code (perl): (dl )
1
2
sub min($$){ $_[0]<$_[1]?$_[0]:$_[1] }
$img->resize(min $gui->width(),$gui->height() / min $img->width(),$img->height());

vorausgesetzt resize vergrößert wenn wert>1 und verkleinert wenn wert<1

auseinander genommen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub min($$){ $_[0]<$_[1]?$_[0]:$_[1] }

my $gh=$gui->height();
my $gw=$gui->width();

my $ih=$img->height();
my $iw=$img->width();

my $gui_min=min($gw,$gh);
my $img_min=min($iw,$ih);

my $scale=$gui_min/$img_min;

$img->resize($scale);


EDIT:
Ich war zu schnell und habe nicht genau genug gelesen. :-)

Das hier sollte funktionieren (ohne es getestet zu haben):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $gui_aspect=$gui->width/$gui->height;
my $img_aspect=$img->width/$img->heigth;
my $diff_aspect=$gui_aspect-$img_aspect;

my $scale=1;

if($diff_aspect < 0)
{ $scale=$gui->height/$img->height; }
else
{ $scale=$gui->width/$img->width; }

$img->scale($scale);


Und nun noch alles in einer Zeile :-)
Code: (dl )
$img->scale($gui->width / $gui->height - $img->width / $img->heigth < 0? $gui->height / $img->height: $gui->width / $img->width )

Last edited: 2012-05-22 23:00:43 +0200 (CEST)

View full thread Bild zentriert einpassen