

Android Çökerten Manzara Fotoğrafı
-
blackhammer bunu yazdıC10H15N bunu yazdı
Allah belasını versin bu fotoğrafın 1 saattir. bununla uğraşıyorum telefonu kapata basınca yaklaşık 10 saniye her şey düzeliyor. o arada zorla duvar kağıdını değiştirebildim ama benim için ölüm oldu. 20 - 30 kere denemişimdir yetişmek için
Deneyenler telefon markasi android surumunu yazsa biz de yorulmasak
Samsung A9 Android 10
-
C10H15N bunu yazdıblackhammer bunu yazdıC10H15N bunu yazdı
Allah belasını versin bu fotoğrafın 1 saattir. bununla uğraşıyorum telefonu kapata basınca yaklaşık 10 saniye her şey düzeliyor. o arada zorla duvar kağıdını değiştirebildim ama benim için ölüm oldu. 20 - 30 kere denemişimdir yetişmek için
Deneyenler telefon markasi android surumunu yazsa biz de yorulmasak
Samsung A9 Android 10

-
/** Okumayı lüks görenler için daha teknik açıklama
Not: Daha önce verdiğim bağlantılardan derlenmiştir. Detaylı anlatım bana aittir, hatalar olabilir.
Şayet görüntü işleme ile uğraşmayalı uzun zaman oldu.
*/
İlgili kaynak kod: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java;bpv=1;bpt=0
Satır 134
int[] histogram = new int[256]; for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { int pixel = grayscale.getPixel(col, row); int y = Color.red(pixel) + Color.green(pixel) + Color.blue(pixel); histogram[y]++; } }RGB bir görüntüde her bir pikselin (görüntüyü oluşturan herbir noktaya piksel denir) 3 bileşeni vardır. Bunlar R (kırmızı), G (yeşil), B (mavi) renklerinin parlaklıklarını saklar. Bir görüntünün histogramını (değerlerin yineleme sıklığını) alacağımız zaman önce görüntüyü gri tonlamaya çeviririz (RGB renk uzayı bu iş için çok karmaşıktır, mesela bizim gözümüz için 255,255,254 ile 255,220,250 aynı rengi ifade edebilir fakat matematiksel olarak birbirinden oldukça uzaktır) ve RGB kanallarından tek bir parlaklık değeri elde ederiz. Bunun aralalığı da 0-255'dir yani 8 bit (daha büyük, küçük de olabilir, yukarıdaki kod parçasını ele alıyoruz). Normalde yukarıdaki koddaki y değeri hiçbir zaman 255 değerini geçemez, 0'dan küçük olamaz (0'dan küçük indeks mi olur diyenin gözlerinden öpüyorum, Java'da olmaz fakat C/C++'ta olur). O görüntüdeki bir hatadan dolayı y değeri aralığın dışına çıkıyor (atıyorum 256, zaten 255'i geçtiği an java sanal makinesi, tamam art de dalvik de, istisna fırlatır geçersiz indis diye).
Bu görüntü özel (renk profili görüntü dosyası içerisine gömülü). Bu ve bunun gibi yüzbinlerce çöktürücü görüntü üretilip telefonlarınız emcüklenebilir. Eski sürümlere yama gelmeyeceğine göre dikkatli olmakta fayda var.
Neden sadece duvar kağıdı sorusuna gelince, buglı kod burada çünkü. Yani olay görüldüğü gibi amoled değil, ilgili servisin sürekli istisna fırlatarak çökmesi. AOSP için yine bağlantılardan verilen çözüm
if (y > 255) {y = 255;} gibi yanlış yerde uygulanacak yanlış bir çözüm. Yukarıdaki kodda bir problem yok aslında. Problem en baştan renkli görüntüyü gri tonlamalı görüntüye çeviren parçanın gelen veriyi denetlememesi.
Android 4.0 kullandığım için bende sıkıntı yok:)
-
YeniHarman bunu yazdı
/** Okumayı lüks görenler için daha teknik açıklama
Not: Daha önce verdiğim bağlantılardan derlenmiştir. Detaylı anlatım bana aittir, hatalar olabilir.
Şayet görüntü işleme ile uğraşmayalı uzun zaman oldu.
*/
İlgili kaynak kod: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java;bpv=1;bpt=0
Satır 134
int[] histogram = new int[256]; for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { int pixel = grayscale.getPixel(col, row); int y = Color.red(pixel) + Color.green(pixel) + Color.blue(pixel); histogram[y]++; } }RGB bir görüntüde her bir pikselin (görüntüyü oluşturan herbir noktaya piksel denir) 3 bileşeni vardır. Bunlar R (kırmızı), G (yeşil), B (mavi) renklerinin parlaklıklarını saklar. Bir görüntünün histogramını (değerlerin yineleme sıklığını) alacağımız zaman önce görüntüyü gri tonlamaya çeviririz (RGB renk uzayı bu iş için çok karmaşıktır, mesela bizim gözümüz için 255,255,254 ile 255,220,250 aynı rengi ifade edebilir fakat matematiksel olarak birbirinden oldukça uzaktır) ve RGB kanallarından tek bir parlaklık değeri elde ederiz. Bunun aralalığı da 0-255'dir yani 8 bit (daha büyük, küçük de olabilir, yukarıdaki kod parçasını ele alıyoruz). Normalde yukarıdaki koddaki y değeri hiçbir zaman 255 değerini geçemez, 0'dan küçük olamaz (0'dan küçük indeks mi olur diyenin gözlerinden öpüyorum, Java'da olmaz fakat C/C++'ta olur). O görüntüdeki bir hatadan dolayı y değeri aralığın dışına çıkıyor (atıyorum 256, zaten 255'i geçtiği an java sanal makinesi, tamam art de dalvik de, istisna fırlatır geçersiz indis diye).
Bu görüntü özel (renk profili görüntü dosyası içerisine gömülü). Bu ve bunun gibi yüzbinlerce çöktürücü görüntü üretilip telefonlarınız emcüklenebilir. Eski sürümlere yama gelmeyeceğine göre dikkatli olmakta fayda var.
Neden sadece duvar kağıdı sorusuna gelince, buglı kod burada çünkü. Yani olay görüldüğü gibi amoled değil, ilgili servisin sürekli istisna fırlatarak çökmesi. AOSP için yine bağlantılardan verilen çözüm
if (y > 255) {y = 255;} gibi yanlış yerde uygulanacak yanlış bir çözüm. Yukarıdaki kodda bir problem yok aslında. Problem en baştan renkli görüntüyü gri tonlamalı görüntüye çeviren parçanın gelen veriyi denetlememesi.
Android 4.0 kullandığım için bende sıkıntı yok:)
yani mevzu o kodu yazan elemanın üşengeçliğimi :D
-
Ben android emulatörde denetim. Pixel 3 android 9 ile denedim. Olmadı. Samsung Galaxy S9 ile android 8 sürümünde denedim yine olmadı.
Emulatörde yemiyormuş demekki :)
-
engin01288 bunu yazdı
Ben android emulatörde denetim. Pixel 3 android 9 ile denedim. Olmadı. Samsung Galaxy S9 ile android 8 sürümünde denedim yine olmadı.
Emulatörde yemiyormuş demekki :)
hocam hangi emulatör:)
-
C10H15N bunu yazdı
Allah belasını versin bu fotoğrafın 1 saattir. bununla uğraşıyorum telefonu kapata basınca yaklaşık 10 saniye her şey düzeliyor. o arada zorla duvar kağıdını değiştirebildim ama benim için ölüm oldu. 20 - 30 kere denemişimdir yetişmek için
Yanacagini bile bile taşağina kolonya dökmekle eş değer bu yaptigin :D
-
ExcaliburTBT bunu yazdıC10H15N bunu yazdı
Allah belasını versin bu fotoğrafın 1 saattir. bununla uğraşıyorum telefonu kapata basınca yaklaşık 10 saniye her şey düzeliyor. o arada zorla duvar kağıdını değiştirebildim ama benim için ölüm oldu. 20 - 30 kere denemişimdir yetişmek için
Yanacagini bile bile taşağina kolonya dökmekle eş değer bu yaptigin :D
İnsan bir fotoğrafın telefonu bu kadar sapıttırabileceğine inanamıyor.
-
yustang bunu yazdıengin01288 bunu yazdı
Ben android emulatörde denetim. Pixel 3 android 9 ile denedim. Olmadı. Samsung Galaxy S9 ile android 8 sürümünde denedim yine olmadı.
Emulatörde yemiyormuş demekki :)
hocam hangi emulatör:)
Genymotion Desktop
-