Code Monkey home page Code Monkey logo

panpf / sketch Goto Github PK

View Code? Open in Web Editor NEW
2.0K 54.0 309.0 266.93 MB

Sketch is an image loading library designed for Compose Multiplatform and Android View. It is powerful and rich in functions. In addition to basic functions, it also supports GIF, SVG, video thumbnails, Exif Orientation, etc.

License: Apache License 2.0

Kotlin 99.98% Shell 0.02%
android gif image image-orientation image-loader base64-image video-thumbnail apk-icon exif jetpack-compose

sketch's Issues

用最简单代码进行测试大图加载和阅读模式

Activity

public class MainActivity extends AppCompatActivity {

    private SketchImageView image;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        findViews();
        initViews();
    }

    private void findViews() {
        setContentView(R.layout.activity_main);
        image = (SketchImageView) findViewById(R.id.image);
    }

    private void initViews() {
        image.displayImage("http://appcdn.0315.cn/Uploads/20161022/580b173f378e4.jpg");
        image.setSupportZoom(true);
        image.setSupportLargeImage(true);
        ImageZoomer imageZoomer = image.getImageZoomer();
        imageZoomer.setReadMode(true);
    }
}

layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="cn.iec_ts.test.MainActivity">

    <me.xiaopan.sketch.SketchImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

效果如下
screenshot_2016-10-22-21-28-49-012_cn iec_ts test
screenshot_2016-10-22-21-28-57-277_cn iec_ts test

是不是小的有啥东西没写,为啥我加载出来的长图没有分块,模模糊糊的,是不是什么地方配置错了?

onComplete方法的监听不管用

我现在需要实现这样一个功能,在一个gif播放完以后播放另一个git,我在前一个gif的onComplete方法中调用播放第二个gif的代码,但是两个gif并没有实现先后播放,而是同时播放。多谢楼主!

宽高比

可以设置宽高比来显示图片吗

Bitmap:

How to get bitmap from sketch Image View. Please give me an answer.

Image Thumbnail:

By default sketch image View does not use Exif to show thumbnail. how can i do this ? Because some devices have issues (like samsung j2)

类型转换异常

Version release 2.4.1(2410)
09-01 18:23:28.234 7929-7929/com.eclite.activity W/Bundle: Key XG_V2_ACCESS_ID expected String but value was a java.lang.Integer. The default value was returned.
09-01 18:23:28.235 7929-7929/com.eclite.activity W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at android.os.BaseBundle.getString(BaseBundle.java:995)
at me.xiaopan.sketch.util.SketchUtils.findInitializer(SketchUtils.java:1240)
at me.xiaopan.sketch.Sketch.with(Sketch.java:69)
at me.xiaopan.sketch.viewfun.large.TileDecodeCallbackHandler.(TileDecodeCallbackHandler.java:51)
at me.xiaopan.sketch.viewfun.large.TileExecutor.(TileExecutor.java:50)
at me.xiaopan.sketch.viewfun.large.LargeImageViewer.(LargeImageViewer.java:69)
at me.xiaopan.sketch.viewfun.LargeImageFunction.(LargeImageFunction.java:49)
at me.xiaopan.sketch.viewfun.FunctionPropertyView.setBlockDisplayLargeImageEnabled(FunctionPropertyView.java:363)
at com.eclite.activity.ImageDetailActivityNew$ImagePagerAdapter.instantiateItem(ImageDetailActivityNew.java:419)
at com.eclite.activity.ImageDetailActivityNew$ImagePagerAdapter.instantiateItem(ImageDetailActivityNew.java:392)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1006)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1154)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614)
at android.view.View.measure(View.java:19867)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:19867)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19867)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19867)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)
at android.view.View.measure(View.java:19867)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2336)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1427)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1680)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1315)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6420)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876)
at android.view.Choreographer.doCallbacks(Choreographer.java:688)
at android.view.Choreographer.doFrame(Choreographer.java:623)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:785)

图片变小的问题

近日加入新的工作组,图片加载方面用到了你的Sketch,我想用它的本意是支持Gif和图片加工等原因。不过在使用中,我遇到了如下问题。当我图片URL的地址不可用时,图片列表页面就会展示默认图,这没有问题。但是,假设点击图片Item进入到详情再返回至本页时默认图片就会很神奇的缩小到左上角一块。可能点击一张默认图片Item不会复现,可是多点击几个Item就会出现如上问题。如果您有空,请不吝解答一下。我的猜测是当加载默认图片drawable时,当加载多张旧图(缓存)时scaleType的设置有问题。谢谢。

滑动卡死

大图滑动、放大、缩小... 一些列操作后 (放大状态)会不响应滑动,点击设置并关闭对话框后可以;这时候双击缩小也可以

您好,DisplayRequest 184行有个打印日志的错误

printLogE("loadCompleted", "decode failed", "bitmap recycled", "bitmapInfo: " + 错误在loadResult.getGifDrawable().getInfo());

应该是
printLogE("loadCompleted", "decode failed", "bitmap recycled", "bitmapInfo: " + RecycleBitmapDrawable.getInfo(loadResult.getBitmap(), loadResult.getMimeType()));

占用内存过大 退出Activity不释放内存

举例:在Unsplash这个界面点击其中一张图进入单张浏览页面,一共有20张图,从第一张滑动到最后一张,APP占用内存增加了35兆以上(进入APP时占用31.31M,滑动完成后占用67.51M),在退出该Activity的时候不释放内存。其他的的页面看图片也是这样的

base64 图片加载问题

你好,我在使用本框架的时候,有用到 base64 加载图片,在使用中,发现文档有一处写错了,还请查看下是否存在此问题。
文档描述:
// display base64 image
sketchImageView.displayImage("data:image/jpeg;base,/9j/4QaO...U7T/in//Z");

源码中调用方式:
UriScheme 第 127 行:
return uri.substring(uri.indexOf(";") + ";base64,".length());

我目前使用方式,可以正确显示图片:
imageView.displayImage("data:image/jpeg;" + ";base64," + data.getImage());

如果用户调用文档的方式,控制台会显示 base64 解码错误,会让用户产生一个小误解,以为是 图片错误。请查看是否存在这个问题o( ̄︶ ̄)o

手势缩放问题

在开启手势缩放之后在列表中滑动的时候,划过几张图片之后手势缩放失效,并且在处于图片被手动缩小了之后再滑动过几张图片之后会导致所有图片都缩小了,然后手势缩放还失效了,就变不会来了,这是什么原因啊?我在列表中不开手势缩放到还没感觉出上面的问题

加载图片的时候能设置header吗?

hi xiaopansky:
你的这个库非常好,但是我现在有一个问题,就是在加载图片的时候需要指定一个User-Agent, 我看了下你的文档好像是不支持。能否开放相关接口?

More zoom in SketchImageView

Hi,
I want to have more zoom in SketchImageView
I'm doing the code below but zoom doesn't change to 20f, but remain the default zoom

val photoView = SketchImageView(container.context)
photoView.isZoomEnabled = true
photoView.imageZoomer.zoom(20f)
photoView.options.setImageDisplayer(FadeInImageDisplayer())
photoView.displayImage("http://www.examplelink.com/example.jpg")

Orientation Issue:

How to find out image orientation which is taken from default camera.

Crash issue

menu --- myphotos -- the third gif -- CRASH
my phone is HUAWEI Honor 8 lite base on Android 7.0

gif & network layer

非常棒的图片加载库,但是看了下网络请求图片层用的是HttpClient实现的,考虑到Android后续已经不支持HttpClient,可否替换为其他类似okHTTP之类的加载;另外一个问题是,在加载gif动图的时候例如在列表中加载gif,并且设置都能动的情况,可否实现滚出屏幕之后动图能暂停,用户可见的时候,在继续播放这样的功能呢?

怎么加载网络图片

Sketch.with(context).download或者load方法拿到的result如何在SketchImageView中展示,示例只是说要先下载后加载,但是没有找到下载后怎么展示,多谢答主。

Preview

how to show array of images into image preview

关于GaussianBlurImageProcessor用法

GaussianBlurImageProcessor make = GaussianBlurImageProcessor.make();
DisplayHelper helper = new DisplayHelper();
helper.processor(make);
小弟是这么写的,但是好像不对啊,求指教

Enhancement: Adding zooming feature

Hi,

First of all, thank you for the amazing library! I implemented it in my photoalbum app, it is working great now!

I have a suggestion for this library: Are you thinking of adding a zooming feature? I found this nice library - Scale Image View on Github for zooming images. What do you think?

暂停下载

我只想单独暂停下载一张图片怎么办,比如我检测到一张图片非常大

部分大图 放大后,有空白线

  1. 如示例里面的地图和黑圈,放大后,在部分切块交接边沿有空白线(有的手机看起来像黑线,有的手机看起来是透明的线,显示底下模糊背景)(看起来像是切片小了一个像素,放大到最大,或者缩小到最小就没有线)

  2. 示例里的微博长度,每块切片的加载时间,会越来越长,不断上下滑动,每次切片的时间会递增

MissingFormatArgumentException: Format specifier: 3A

java.util.MissingFormatArgumentException: Format specifier: 3A
	at java.util.Formatter.getArgument(Formatter.java:1111)
	at java.util.Formatter.doFormat(Formatter.java:1076)
	at java.util.Formatter.format(Formatter.java:1042)
	at java.util.Formatter.format(Formatter.java:1011)
	at java.lang.String.format(String.java:1999)
	at java.lang.String.format(String.java:1973)
	at me.xiaopan.sketch.SLog.w(SLog.java:228)
	at me.xiaopan.sketch.SLog.w(SLog.java:241)
	at me.xiaopan.sketch.util.DiskLruCache.deleteContents(DiskLruCache.java:259)
	at me.xiaopan.sketch.util.DiskLruCache.delete(DiskLruCache.java:776)
	at me.xiaopan.sketch.util.DiskLruCache.open$51f85bc7(DiskLruCache.java:326)
	at me.xiaopan.sketch.cache.LruDiskCache.installDiskCache(LruDiskCache.java:115)
	at me.xiaopan.sketch.cache.LruDiskCache.get(LruDiskCache.java:165)
	at me.xiaopan.sketch.request.DownloadRequest.runDispatch(DownloadRequest.java:129)
	at me.xiaopan.sketch.request.LoadRequest.runDispatch(LoadRequest.java:160)
	at me.xiaopan.sketch.request.AsyncRequest.executeDispatch(AsyncRequest.java:62)
	at me.xiaopan.sketch.request.AsyncRequest.run(AsyncRequest.java:19)
	at me.xiaopan.sketch.request.RequestExecutor$DispatchCallback.handleMessage(RequestExecutor.java:186)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:193)
	at android.os.HandlerThread.run(HandlerThread.java:61)

发生版本:2.3.1
修复版本:将在下个版本2.3.2上修复

在setSupportLargeImage为true情况下 滚动视图不刷新

代码是这样设置的

@Override
         public Object instantiateItem(ViewGroup view, final int position) {
            final SketchImageView imageView = new SketchImageView(browseImageActivity);
            imageView.setSupportLargeImage(true);
            imageView.setSupportZoom(true);
            imageView.displayImage(list.get(position));

            ViewGroup.LayoutParams layoutParams = new ViewPager.LayoutParams();
            view.addView(imageView, layoutParams);

            ImageZoomer zoomer = imageView.getImageZoomer();
            zoomer.setReadMode(true);
            zoomer.setOnViewLongPressListener(new ImageZoomer.OnViewLongPressListener() {
                @Override
                public void onViewLongPress(View view, float x, float y) {
                    browseImageActivity.popWindow.showAtLocation(LayoutInflater.from(browseImageActivity).inflate(R.layout.activity_main, null), Gravity.CENTER, 0, 0);
                }
            });

            return imageView;
        }

现象的视频发你邮箱([email protected])了 跪求解决

Rotate :

I have a image viewer app. i want to rotate image from portrait to landscape view & similarly rotate image from landscape to portrait. How to do that via sketch.

Provide a English version of the README.md

Hey, I'm Brazilian we speak portugese here, I saw your lib on Android Arsenal, but I dont know Chinese, can you provide at least a translated README.md file, I believe that a lot of people would use your lib.
Cya

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.