Dnes jsem se pokusil znovu pouzit rozdelovani obrazku ve svem programu ShrinkerImages. Pouze s jednim obrazkem – totiz fotkou z me Lumie 435. Nicmene poprve jsem se realne setkal s obrazkem ktery mel nizsi DPI nez klasickych 96. Pokud ma obrazek jine DPI nez 96(vyzkousene to mam pouze s nizsim), tak treba metoda BitmapImage vraci napriklad velikost tohoto obrazku takto: Skutecna sirka v px * 96 / DpiX obrazku. Analogicky s vyskou. Mel jsem kod ktery obrazek orezaval, ted uz vim ze je dobre zkontrolovat DPI a pripadne nastavit jinou velikost. Nebude to mit vliv napriklad na velikost v px vysledneho obrazku.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//-bi je BitmapImage obrazek ke vyrezu, point je bod od ktereho se vyrezava, size je velikost ktera se vyrezava if (bi.DpiX != 96) { size.Width /= 96d; size.Width *= bi.DpiX; point.X /= 96d; point.X *= bi.DpiX; } if (bi.DpiY != 96) { size.Height /= 96d; size.Height *= bi.DpiY; point.Y /= 96d; point.Y *= bi.DpiY; } //-Samotna operace vyrezu return BitmapFrame.Create( new CroppedBitmap(bi, new Int32Rect((int)point.X, (int)point.Y, (int)size.Width, (int)size.Height))); |