FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

feat(image-asset-ios): add autoScaleFactor option to switch auto scal… · NativeScript/NativeScript@81e63ee · GitHub

Commit 81e63ee

Browse files
authored
feat(image-asset-ios): add autoScaleFactor option to switch auto scaling (#6127)
1 parent 7e89f94 commit 81e63ee

5 files changed

Lines changed: 32 additions & 11 deletions

File tree

‎tests/app/image-source/image-source-tests.ts‎

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,20 +111,37 @@ export function testFromAssetSimple(done) {
111111
});
112112
}
113113

114-
export function testFromAssetWithScaling(done) {
114+
export function testFromAssetWithExactScaling(done) {
115115
let asset = new imageAssetModule.ImageAsset(splashscreenPath);
116116
let scaleWidth = 10;
117117
let scaleHeight = 11;
118118
asset.options = {
119119
width: scaleWidth,
120120
height: scaleHeight,
121-
keepAspectRatio: false
121+
keepAspectRatio: false,
122+
autoScaleFactor: false
122123
};
123124

124-
let img = imageSource.fromAsset(asset).then((source) => {
125+
imageSource.fromAsset(asset).then((source) => {
125126
TKUnit.assertEqual(source.width, scaleWidth);
126127
TKUnit.assertEqual(source.height, scaleHeight);
127-
done();
128+
129+
const targetFilename = `splashscreenTemp.png`;
130+
const tempPath = fs.knownFolders.temp().path;
131+
const localFullPath = fs.path.join(tempPath, targetFilename);
132+
133+
const fullImageSaved = source.saveToFile(localFullPath, "png");
134+
135+
if (fullImageSaved) {
136+
let sourceImage = new imageSource.ImageSource();
137+
sourceImage.fromFile(localFullPath).then(() => {
138+
TKUnit.assertEqual(sourceImage.width, scaleWidth);
139+
TKUnit.assertEqual(sourceImage.height, scaleHeight);
140+
done();
141+
});
142+
} else {
143+
done(`Error saving photo to local temp folder: ${localFullPath}`);
144+
}
128145
}, (error) => {
129146
done(error);
130147
});

‎tns-core-modules/image-asset/image-asset-common.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ import * as definition from ".";
22
import * as observable from "../data/observable";
33
import * as platform from "../platform";
44

5-
export class ImageAsset extends observable.Observable implements definition.ImageAsset {
5+
export class ImageAsset extends observable.Observable implements definition.ImageAsset {
66
private _options: definition.ImageAssetOptions;
77
private _nativeImage: any;
88

99
ios: PHAsset;
1010
android: string;
1111

12-
constructor () {
12+
constructor() {
1313
super();
14-
this._options = { keepAspectRatio: true };
14+
this._options = { keepAspectRatio: true, autoScaleFactor: true };
1515
}
1616

1717
get options(): definition.ImageAssetOptions {

‎tns-core-modules/image-asset/image-asset.d.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ export interface ImageAssetOptions {
1717
width?: number;
1818
height?: number;
1919
keepAspectRatio?: boolean;
20+
autoScaleFactor?: boolean;
2021
}

‎tns-core-modules/image-asset/image-asset.ios.ts‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class ImageAsset extends common.ImageAsset {
5050
let imageRequestOptions = PHImageRequestOptions.alloc().init();
5151
imageRequestOptions.deliveryMode = PHImageRequestOptionsDeliveryMode.HighQualityFormat;
5252
imageRequestOptions.networkAccessAllowed = true;
53-
53+
5454
PHImageManager.defaultManager().requestImageForAssetTargetSizeContentModeOptionsResultHandler(this.ios, requestedSize, PHImageContentMode.AspectFit, imageRequestOptions,
5555
(image, imageResultInfo) => {
5656
if (image) {
@@ -64,8 +64,11 @@ export class ImageAsset extends common.ImageAsset {
6464
);
6565
}
6666

67-
private scaleImage(image: UIImage, requestedSize: {width: number, height: number}): UIImage {
68-
UIGraphicsBeginImageContextWithOptions(requestedSize, false, 0.0);
67+
private scaleImage(image: UIImage, requestedSize: { width: number, height: number }): UIImage {
68+
// scaleFactor = 0 takes the scale factor of the devices's main screen.
69+
const scaleFactor = this.options && this.options.autoScaleFactor === false ? 1.0 : 0.0;
70+
71+
UIGraphicsBeginImageContextWithOptions(requestedSize, false, scaleFactor);
6972
image.drawInRect(CGRectMake(0, 0, requestedSize.width, requestedSize.height));
7073
let resultImage = UIGraphicsGetImageFromCurrentImageContext();
7174
UIGraphicsEndImageContext();

‎tns-core-modules/image-source/image-source.ios.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ function getFileName(path: string): string {
190190
return fileName;
191191
}
192192

193-
function getImageData(instance: UIImage, format: "png" | "jpeg" | "jpg", quality = 1.0): NSData {
193+
function getImageData(instance: UIImage, format: "png" | "jpeg" | "jpg", quality = 0.9): NSData {
194194
var data = null;
195195
switch (format) {
196196
case "png":

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL