boolean needsMatrixTransform() { return hasSize() || rotationDegrees != 0; }
/** * Lazily create {@link BitmapFactory.Options} based in given * {@link Request}, only instantiating them if needed. */ @Nullable static BitmapFactory.Options createBitmapOptions(Request data) { final boolean justBounds = data.hasSize(); BitmapFactory.Options options = null; if (justBounds || data.config != null || data.purgeable) { options = new BitmapFactory.Options(); options.inJustDecodeBounds = justBounds; options.inInputShareable = data.purgeable; options.inPurgeable = data.purgeable; if (data.config != null) { options.inPreferredConfig = data.config; } } return options; }
if (data.hasSize()) { builder.append("resize:").append(data.targetWidth).append('x').append(data.targetHeight); builder.append(KEY_SEPARATOR);
@Override public void onHeaderDecoded(@NonNull ImageDecoder imageDecoder, @NonNull ImageDecoder.ImageInfo imageInfo, @NonNull ImageDecoder.Source source) { if (request.hasSize()) { Size size = imageInfo.getSize(); if (shouldResize(request.onlyScaleDown, size.getWidth(), size.getHeight(), request.targetWidth, request.targetHeight)) { imageDecoder.setTargetSize(request.targetWidth, request.targetHeight); } } } });
@Test public void nonResizedRequestsAreTransformedWhenAlwaysTransformIsSet() { Request input = new Request.Builder(IMAGE_URI).build(); Request output = alwaysResizeTransformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); String expected = Thumbor.create(HOST).buildImage(IMAGE).toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
@Test public void simpleResize() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).build(); Request output = transformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); String expected = Thumbor.create(HOST).buildImage(IMAGE).resize(50, 50).toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
@Test public void simpleResizeWithCenterCrop() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).centerCrop().build(); Request output = transformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); assertThat(output.centerCrop).isFalse(); String expected = Thumbor.create(HOST).buildImage(IMAGE).resize(50, 50).toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
@Test public void simpleResizeWithEncryption() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).build(); Request output = secureTransformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); String expected = Thumbor.create(HOST, KEY).buildImage(IMAGE).resize(50, 50).toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
@Config(sdk = 18) @Test public void simpleResizeOnJbMr2UsesWebP() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).build(); Request output = transformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); String expected = Thumbor.create(HOST) .buildImage(IMAGE) .resize(50, 50) .filter(format(ImageFormat.WEBP)) .toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
@Test public void simpleResizeWithCenterInsideAndEncryption() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).centerInside().build(); Request output = secureTransformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); assertThat(output.centerInside).isFalse(); String expected = Thumbor.create(HOST, KEY).buildImage(IMAGE).resize(50, 50).fitIn().toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); } }
@Test public void simpleResizeWithCenterInside() { Request input = new Request.Builder(IMAGE_URI).resize(50, 50).centerInside().build(); Request output = transformer.transformRequest(input); assertThat(output).isNotSameAs(input); assertThat(output.hasSize()).isFalse(); assertThat(output.centerInside).isFalse(); String expected = Thumbor.create(HOST).buildImage(IMAGE).resize(50, 50).fitIn().toUrl(); assertThat(output.uri.toString()).isEqualTo(expected); }
boolean isVideo = mimeType != null && mimeType.startsWith("video/"); if (request.hasSize()) { PicassoKind picassoKind = getPicassoKind(request.targetWidth, request.targetHeight); if (!isVideo && picassoKind == FULL) {