调整大小并保存图像

时间:2018-06-12 05:15:06

标签: android image bitmap android-glide

我使用Glide 4.7.1尝试调整大小并保存一些照片。

for (String path : this.paths) {
        Glide.with(this.context).asBitmap().load(path).apply(RequestOptions.fitCenterTransform()).into(new SimpleTarget<Bitmap>(1080, 1920) {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                try {
                    resource.compress(Bitmap.CompressFormat.JPEG, 85, new FileOutputStream(MasterFacade.getAppDir() + "temp/" + resource.hashCode() + ".jpg"));
                    listener.onUpdate(progressMessage, processed.get());

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        });
    }

我只想调整大小(保持宽高比)到1080x1920(或最近),然后将新位图保存到文件中。

我确定我已经允许写作 我确定path图片存在 我确定MasterFacade.getAppDir() + "temp/" + resource.hashCode() + ".jpg"是一个有效的目录,而且我已经在上面写了一段时间

但是这个代码永远不会到达!

我尝试调试,onResourceReady永远不会被调用...

我做错了什么?

6 个答案:

答案 0 :(得分:2)

在Glide 4.x

中使用此图像调整图像大小
Glide.with(getContext())
.load(imagePath)
.apply(new RequestOptions().override(600, 200))
.fitCenter() 
.into(setImage);

答案 1 :(得分:0)

您可以使用override功能滑动来调整图像大小。

您可以从https://stackoverflow.com/a/50617561/6238866

获得更多

赞:

public static void loadCircularImageGlide(String imagePath, ImageView view) {
    Glide.with(view.getContext())
            .load(imagePath)
            .asBitmap()
            .override(1080,1920) // resizes the image to these dimensions (in pixel). resize does not respect aspect ratio
            .error(R.drawable.create_timeline_placeholder)
            .fitCenter() // scaling options
            .transform(new CircularTransformation(view.getContext())) // Even you can Give image tranformation too
            .into(view);
}

答案 2 :(得分:0)

问题似乎是由路径引起的,如果你想从外部存储器加载图像,在 Glide 中,你必须使用正确的路径

确保路径有效

name_get()

答案 3 :(得分:0)

您可以使用glide.try来调整图像大小......

Glide.with(getContext()) .load(imagePath) .apply(new RequestOptions().override(600, 200)) .fitCenter() .into(setImage);

答案 4 :(得分:0)

我相信没有一个答案能真正解读我的问题:

我尝试调试,onResourceReady永远不会被调用...

所以我检查了滑动维基,它说:

  

第二个关键部分是Glide构建器行.with(context)。该   这里的问题实际上是Glide的一个特性:当你传递一个上下文时,   例如当前的app活动,Glide会自动停止   请求活动停止时的请求

我在调用finish()之后就调用了上面的代码,因此代码在Glide内部停止而没有抛出任何异常,并且onResourceReady从未被调用过。

答案 5 :(得分:0)

像@Gautam Kumar一样获得图像,但是您还必须通过添加android:adjustViewBounds =“ true”来更改XML中的imageView。

Glide.with(getContext()) .load(imagePath) .apply(new RequestOptions().override(600, 200)) .into(setImage);

然后输入您的XML

      <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        android:id="@+id/image_id"
        android:src="@drawable/ic_image" />