2011-10-04 9 views
14

Bir görüntüde Pinch Zoom işlevi için XML'de tanımlanan özel bir ImageView olan bir Activity yaşıyorum. Şimdi benim sorunum, ölçeklenmiş Bitmap'u Pinch Zoom işlevinden almak istiyorum. Örneğin, kullanıcı Görüntü üzerinde yakınlaştırma yapıp yapmadığında, resmin tam boyutunu ve Görüntünün konumunu Bitmap olarak saklamak istiyorum.ImageView'den ölçeklendirmeye nasıl edinilirim?

Bu, XML'de bildirilen özel ImageView'ümdür.

<com.cam.view.PinchZoom_ImageView 
    android:id="@+id/gallery_selected_image_view" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/icon" 
    android:scaleType="center" 
/> 

GÜNCELLEME:

Ben ölçekli Image almak için aşağıdaki kodu çalışıyorum, ancak bir boş Bitmap döndürür.

 pinchZoom.setDrawingCacheEnabled(true); 
     pinchZoom.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
        MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
     pinchZoom.layout(0, 0, pinchZoom.getMeasuredWidth(), pinchZoom.getMeasuredHeight()); 
     pinchZoom.buildDrawingCache(true); 
     Bitmap_gallery_Item = Bitmap.createBitmap(pinchZoom.getDrawingCache()); 
     pinchZoom.setDrawingCacheEnabled(false); 

Herhangi bir yardım için teşekkür ederiz. Teşekkürler

cevap

12

Eh uzanır size yardımcı olacaktır görünüyor. Sonunda matrix kullanmayı başardım. Çözüm çok basittir ki, bir matristeki Resmin translation and scaling'unu saklıyordum. Bu yüzden, son matrix'u public static olarak beyan ettim ve bu matrisi tuval üzerine bir Bitmap çizmek için kullandı.

 Canvas comboImage = new Canvas(cs); 
     background = Bitmap.createScaledBitmap(background, width, height, true); 
     comboImage.drawBitmap(background, 0, 0, null); 
     comboImage.drawBitmap(foreground, PinchZoom_ImageView.matrix, null); 

Burada gördüğünüz gibi PinchZoom_ImageView.matrix. , public static olarak bildirdiğim ölçeklendirilmiş ve çevrilmiş resmin son konumunu içeren bir.

+0

iyi bir ... XMl içinde ilan edilen her ImageView üzerinde çalışacak? – Siten

+0

evet, zoom uyguladığınız herhangi bir görüntü için çalışacaktır. –

+0

@Lalit Poptani - Bunun gibi görünüyor, yalnızca ImageView matrisi açıkça ayarlanmışsa çalışır. Ölçek türünden bağımsız olarak görüntülenen haliyle bir bitmapi çıkarmanın bir yolu olması harika olurdu. – Lee

0

scaleType="fitxy" varsa, ImageView'un genişliğini/yüksekliğini büyütmek veya küçültmek için bir ölçekleme faktörü kullanabilirsiniz - Aynı boyutta olduğu için görüntünün tam yüksekliğini/genişliğini geri çekebileceğiniz anlamına da gelir. konteyner olduğu gibi.

HTH

+0

Fitxy arkadaşına sahip değilim, Görüntü'üm hareketli ve ayrıca yakınlaştırmaya da izin veriyor, bu yüzden Görüntüden sonra ölçeklendirmenin yanı sıra Bitmap'i de depolamak istiyorum. Teşekkürler –

+0

Tamam - Durumun ne olduğunu bilmiyorum ama ImageView'i yukarıdaki gibi uygulayarak görüntüyü hareketli ve yakınlaştırma yapamaz mıydınız? – Graeme

+0

Yukarıda, scaleType = "fitxy" yi kullanarak bunu söylüyorsunuz? –

0

Bu mesaj Galerisi'nden Resmi Kırpma içerir ve Görüntü kırpmak ve ImageView içinde kırpılmış Resim ve Gösterileri tasarrufu yapmasını sağlar.

nihayet Ben sadece bir tek satır kod olduğuna inanamıyorum, bazı

Image Crop and show cropped Image in View

+0

Teşekkürler. Kontrol edeceğim ve dostum .. –

+0

@Lalit Poptani Okay da machan – Venky