В настоящее время я имею дело с действительно большими изображениями (7-10 МБ), которые не могут быть изменены или сжаты по нескольким причинам.
Теперь идея состоит в том, чтобы показать их в пользовательском ImageView, который позволяет пользователю выполнять двойное нажатие, масштабирование и т. Д.
Я использовал эту библиотеку для работы: https://github.com/MikeOrtiz/TouchImageView
Я пробовал и другие библиотеки, но все остальные библиотеки работают очень медленно. Может кто-нибудь дать мне несколько советов / предложений, чтобы сделать это быстрее (даже написать мой собственный C ++ implantation)?
Я немного растерялся со всеми этими «матрицами», «полетами», «масштабированием», и я понятия не имею, что мне следует трогать, чтобы сделать это быстрее. Если вы знаете и другие более быстрые библиотеки (или как использовать пользовательскую реализацию Android, которая работает очень быстро), это было бы здорово.
Вы пытались использовать функцию DeepZoom библиотеки Ion?
https://www.youtube.com/watch?v=yIMltNEAKZY
Если вы не хотите использовать opengl или вышеуказанная библиотека не работает, вы также можете попробовать поиграть с http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html учебный класс. То есть, отслеживать «где» пользователь (область просмотра & уровень масштабирования) и декодировать эту область вне основного потока, выталкивая ее на холст каждый раз, когда пользователь изменяет ввод.
Попробуйте библиотеку openCV или используйте ее в matlab, а затем перенесите код в c / c ++ для улучшения изображения
Вы можете попробовать вручную реализовать «mipmaps» — разные размеры одного и того же изображения, а затем просто использовать изображение наиболее подходящего размера для отображения …. таким образом, при уменьшении вы будете манипулировать сравнительно небольшим изображением (но все равно получить полную детализацию большого при увеличении).
Попробуйте библиотеку под названием PhotoView. При использовании вместе с Picasso, я смог достичь функциональности Onlick, позволяющей пользователю щелкнуть на меньшем изображении и получить на нем полное изображение в пользовательском представлении с функцией масштабирования. Это действительно легко реализовать
Одним из способов решения этой проблемы является использование WebView, который поддерживает панорамирование, масштабирование и т. Д. Я думаю, что качество изображения может быть проблемой.
андроид-местный образ-в-WebView
Android-надстройку изображение-к-WebView-с-а-Drawable
и т.п.
Вы также можете генерировать и загружать HTML динамически
В TouchImageView.java классе DoubleTapZoom установите меньшее или большее значение для ZOOM_TIME
private class DoubleTapZoom implements Runnable {
......
private static final float ZOOM_TIME = 500 //(lower - faster)
......