English | 简体中文 | 正體中文 | 日本語

EhViewer
LocalViewer

Github Actions LICENSE Release Issues

Github Actions LICENSE

Description | Download | Screenshot | Thanks | License

# Description A High performance Android SMB/WebDAV image viewer/comic reader with network gallery folder support. Based on [EhViewer](https://github.com/FooIbar/EhViewer) With [Material Design 3](https://m3.material.io/) and [Dynamic Color](https://m3.material.io/styles/color/dynamic-color/overview) Support. Similar to Perfect Viewer and Kuro Reader, with Hi-Res images support (no downscaling), clean UI and good performance. Build with Grok 4.5. Get it on GitHub ## Features * Webtoon gallery reader. * Local and network libraries for photo/video/comic/ebook. * Easy to use, just add your folders and done. * Window manager and folder tab, clean navigation flow between multiple sources. * Instant scanning and classification for media files in local and network folders. * One for all folder listing mode (Videos/Photos/Documents all with their own tags and filters). * Fully working on Meta Quest 3. * Open or share files like a file manager. * Fine-tuned page loader, image prefetch with no OOM crashes. * Gallery folder covers and reading progress. * Native Android app (Kotlin + Jetpack Compose). * Material Design 3 Navigation bar. * Highly optimized network image loading, with high-quality rendering. * HDR, Wide Color Gamut and 10-bit color mode support. * Instant local archive reading with mmap. * ZIP/RAR/CBZ/CBR/CBT/PDF/EPUB support over network share. * PDF/EPUB/MOBI/FB2/TXT/AZW3/Markdown Ebook support with text formatting. * JXL/JXR/JPG/AVIF/HEIC HDR support. * PQ/HLG HEIF software decoding with preserved high bit depth on 64-bit builds. * 14-Bit RAW formats decoding with true HDR output. * RAW formats support dng/cr2/cr3/nef/nrw/arw/raf/orf/rw2/pef/srw/raw. * Batch convert JXL/JXR/RAW to JPEG, JPEG XL, AVIF in both SDR and HDR. * Compatible with Oppo/OnePlus ProXDR HEIC format. * Compatible with Apple HDR (HEIF, AVIF). * Nearest, Bilinear, B-Spline, Catmull-Rom, Mitchell-Netravali, Lanczos3 image scalers using GPU shader. * Open offline html website archive in your browser with built-in HTTP server. * Network folder playback for MPV/MX Player/VLC with subtitles and external autio track. * Optimized Async TCP connection poll. * Fast smbj client with concurrent connections. * SMB signing JCE AESCMAC hardware acceleration. * Ktor OkHttp WebDAV client with HTTP/2 (default) and CIO HTTP/1.1 fallback. * High performance reader with network cache from EhViewer. * Reader double tap to open previous/next gallery. * Reader allow full size image decode. * Reader auto rotate image. * Reader comic dual pages mode. * E-Ink mode support (ported from [venera-next](https://github.com/cyrilpeng/venera-next)). * EasyTier support (ported from [moonlight-vplus](https://github.com/qiin2333/moonlight-vplus)). * TXT chapter support (ported from [txtautotoc](https://github.com/cchenhen/txtautotoc)). ### Performance * The custom SMBJ and WebDAV clients achieve 1 Gbps network speeds over Wi-Fi 7, so after v1.11.x the image reader defaults to have image caching disabled. * Windows 11 JXR HDR screenshots can be displayed in fp16 hdr bitmaps, or transcode to Ultra HDR Jpeg. * The image loader was tweaked for preloading and decoding 100MB jpg hdr files over network without any OOM crashes, and smaller files should load instantly. * Accurate HDR presentation of RAW and JXR images (compared with DaVinci Resolve). # Download | Flavor | Minimum Android Version | Features | |-------------|-------------------------|--------------------------------| | Default | 12 | Basic | | Default | 14 (arm64-v8a, x86-64) | HDR, GPU Shaders, RAW | | EasyTier | 12 (arm64-v8a) | Basic, EasyTier | | EasyTier | 14 (arm64-v8a) | HDR, GPU Shaders, RAW, EasyTier| Get it on GitHub ## HDR Image Conversion LocalViewer supports converting JXR, JXL and RAW formats to Ultra HDR JPEG, AVIF and JXL with multiple HDR transfer options (ISO 21496-1 gain map, Linear, PQ). | Target | Output depth | Transfer | |---|---|---| | JXL HDR | 16-bit float | Linear, with luminance metadata | | JXL HDR PQ | 16-bit integer | PQ | | JPEG HDR | 8-bit base + gain map | sRGB base, HDR reconstruction | | AVIF HDR | 10-bit; 12-bit at Lossless | sRGB base + ISO gain map | | AVIF HDR PQ | 10-bit; 12-bit at Lossless | PQ | # Screenshot ![LocalViewer screenshot main page](https://github.com/zmz125000/LocalViewer-art/blob/master/screenshots-01.webp) ![LocalViewer screenshot gallery reader](https://github.com/zmz125000/LocalViewer-art/blob/master/screenshots-02.webp) ![LocalViewer screenshot window manager](https://github.com/zmz125000/LocalViewer-art/blob/master/screenshots-03.webp) ### To use WebDAV ``openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes`` ```.\rclone.exe serve webdav "D:\" --addr :8443 --cert .\server.crt --key .\server.key --read-only --user admin --pass password``` ### To use SMB3 encryption: `Get-SmbShare | Select-Object Name, EncryptData` `Set-SmbShare -Name "Media" -EncryptData $true` `Set-SmbServerConfiguration -RejectUnencryptedAccess $false -Force` ``` while ($true) { Clear-Host $config = Get-SmbServerConfiguration $sessions = Get-SmbSession Write-Host "--- SMB SERVER ENCRYPTION STATUS ---" -ForegroundColor Cyan Write-Host "Global Server Encryption Enabled : $($config.EncryptData)" Write-Host "Reject Unencrypted Access : $($config.RejectUnencryptedAccess)" Write-Host "Active Sessions : $(($sessions).Count)" Write-Host "Timestamp : $(Get-Date -Format 'HH:mm:ss')" Write-Host "------------------------------------`n" if ($sessions) { $sessions | Select-Object ClientComputerName, ClientUserName, Dialect, NumOpens | Format-Table -AutoSize } Start-Sleep -Seconds 1 } ``` # Thanks - [cchenhen](https://github.com/cchenhen) for txtautotoc. - [miaoxin2003](https://github.com/miaoxin2003) for improvements to PDF. Here is the libraries - [Arrow](https://arrow-kt.io/) - [AOSP & AndroidX](https://source.android.com/) - [Kotlin & KotlinX](https://kotlinlang.org/) - [Material Icons](https://github.com/google/material-design-icons) - [Ktor](https://ktor.io/) - [Coil](https://coil-kt.github.io/coil/) - [Compose Destinations](https://composedestinations.rafaelcosta.xyz/) - [libarchive](https://www.libarchive.org/) - [libultrahdr](https://github.com/google/libultrahdr) - [EasyTier](https://github.com/EasyTier/Easytier) - [LibRaw](https://github.com/libraw/libraw) **App libraries** - [smbj](https://github.com/hierynomus/smbj) — SMB client - [ZXing](https://github.com/zxing/zxing) — QR codes - [Telephoto](https://github.com/saket/telephoto) — zoomable images - [MaterialKolor](https://github.com/jordond/materialkolor) — dynamic color - [Material Motion](https://github.com/fornewid/material-motion-compose) — transitions - [Compose Preference](https://github.com/zhanghai/ComposePreference) — settings UI - [AboutLibraries](https://github.com/mikepenz/AboutLibraries) — license screen - [moko-resources](https://github.com/icerockdev/moko-resources) — strings - [Reorderable](https://github.com/Calvin-LL/Reorderable) — drag-to-reorder lists - [xmlutil](https://github.com/pdvrieze/xmlutil) — XML - [kotlin-multiplatform-diff](https://github.com/petertrr/kotlin-multiplatform-diff) — text diff - [Splitties](https://github.com/LouisCAD/Splitties) and [Okio](https://square.github.io/okio/) **Native codecs** - [libwebp](https://github.com/webmproject/libwebp) - [libjxl](https://github.com/libjxl/libjxl) - [libavif](https://github.com/AOMediaCodec/libavif) and [dav1d](https://code.videolan.org/videolan/dav1d) - [libde265](https://github.com/strukturag/libde265) (PQ/HLG HEIF software decode) - [jpegxr](https://github.com/bvibber/jpegxr) - [OpenJPEG](https://github.com/uclouvain/openjpeg) - [XZ](https://github.com/tukaani-project/xz) and [Nettle](https://gitlab.com/gnutls/nettle) # License Copyright 2014-2019 Hippo Seven Copyright 2020-2022 NekoInverter Copyright 2022-2023 Tarsin Norbin Copyright 2023-2024 Foolbar LocalViewer is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. LocalViewer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with EhViewer. If not, see .