diff --git a/app/src/leanback/java/com/fongmi/android/tv/Product.java b/app/src/leanback/java/com/fongmi/android/tv/Product.java index 7bea1a3f7..905fa9de3 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Product.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Product.java @@ -17,4 +17,17 @@ public class Product { public static int getEms() { return Math.min(ResUtil.getScreenWidth() / ResUtil.sp2px(24), 35); } + + public static byte[] resize(byte[] bytes) { + int width = ResUtil.getScreenWidth(); + int height = ResUtil.getScreenHeight(); + Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); + if (bitmap.getWidth() < width && bitmap.getHeight() < height) return bytes; + Matrix matrix = new Matrix(); + matrix.postScale((float) width / bitmap.getWidth(), (float) height / bitmap.getHeight()); + bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); + return baos.toByteArray(); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java index d2596b9d9..136155993 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java @@ -3,13 +3,13 @@ package com.fongmi.android.tv.api; import android.graphics.drawable.Drawable; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.Product; import com.fongmi.android.tv.R; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.net.Callback; import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.utils.FileUtil; -import com.fongmi.android.tv.utils.ImgUtil; import com.fongmi.android.tv.utils.Prefers; import java.io.File; @@ -84,7 +84,7 @@ public class WallConfig { private File write(File file) throws IOException { if (url.startsWith("file")) FileUtil.copy(FileUtil.getLocal(url), file); - else if (url.startsWith("http")) FileUtil.write(file, ImgUtil.resize(OkHttp.newCall(url).execute().body().bytes())); + else if (url.startsWith("http")) FileUtil.write(file, Product.resize(OkHttp.newCall(url).execute().body().bytes())); else file.delete(); return file; } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java index a68526141..697ff273d 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java @@ -1,8 +1,6 @@ package com.fongmi.android.tv.utils; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -20,8 +18,6 @@ import com.bumptech.glide.signature.ObjectKey; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; -import java.io.ByteArrayOutputStream; - public class ImgUtil { public static void load(String url, ImageView view) { @@ -79,17 +75,4 @@ public class ImgUtil { } }; } - - public static byte[] resize(byte[] bytes) { - int width = ResUtil.getScreenWidth(); - int height = ResUtil.getScreenHeight(); - Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); - if (bitmap.getWidth() < width && bitmap.getHeight() < height) return bytes; - Matrix matrix = new Matrix(); - matrix.postScale((float) width / bitmap.getWidth(), (float) height / bitmap.getHeight()); - bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); - return baos.toByteArray(); - } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/Product.java b/app/src/mobile/java/com/fongmi/android/tv/Product.java index b595b4d0f..6af7a4696 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Product.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Product.java @@ -1,10 +1,14 @@ package com.fongmi.android.tv; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; +import java.io.ByteArrayOutputStream; + public class Product { public static int getColumn() { @@ -24,4 +28,19 @@ public class Product { int height = (int) (width / 0.75f); return new int[]{width, height}; } + + public static byte[] resize(byte[] bytes) { + Bitmap bitmap = crop(BitmapFactory.decodeByteArray(bytes, 0, bytes.length)); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); + return baos.toByteArray(); + } + + private static Bitmap crop(Bitmap bitmap) { + if (bitmap.getWidth() >= bitmap.getHeight()) { + return Bitmap.createBitmap(bitmap, bitmap.getWidth() / 2 - bitmap.getHeight() / 2, 0, bitmap.getHeight(), bitmap.getHeight()); + } else { + return Bitmap.createBitmap(bitmap, 0, bitmap.getHeight() / 2 - bitmap.getWidth() / 2, bitmap.getWidth(), bitmap.getWidth()); + } + } }