2012-09-23 14 views
8

Ben iOS6 Safari Mobil'de Tuval üzerine bir FileReader nesnesi ile yüklenen bir yerel görüntü oluşturmaya çalışırlar. Ancak veri-URL’si olan her resim dikey olarak ölçeklenir. Bu bir hata mı? Chrome'da doğru şekilde oluşturuldu.Mobil Safari <img src="data:image/jpeg;base64..."> Tuval üzerine ölçekli aktif kılar?

(yukarıda: Tuval, aşağıda SELÇOKİ)

ScreenShot from iOS6

çalışmak-around için bu hatayı herhangi bir yolu var mı? Bu bir hata mı? İlk "PhotoWizard" App (aşağı 720px genişliğine büyütülebilir) cihaz üzerinde görüntü boyutlandırma ise

, Kanvas doğru oluşturur. biraz daha iyi görünüyor, Jake Archibald den

çalıştı öneri, ama yine de dikey ölçekli alır: Kamera App ile çekilen görüntü boyutu veya görüntüleri ile ilgili bir sorun gibi görünüyor

Ben yüklü Android 4.1.1 ile Galaxy Nexus üzerinde bugün denedim. beklendiği gibi çalışır, bu nedenle bu gerçekten bir cep Safari konuya benziyor:

+0

JS'deki bir resmi yeniden boyutlandırmaya çalışırken simüler şeyler buldum. Bkz. – NimmoNet

+0

Herhangi bir geçici çözüm var mı? Ben "yüklenmesinden" ve/h w görüntü alma ve tuvale render arasındaki beş saniyelik bir gecikme eklemek çalıştı. Düzeltmedim. Resmi tuvalde işlemeden önce "requestAnimationFrame" de düşündüm, ya da düzeltmedim. –

+0

Blob URL'sini şu şekilde kullanmaya çalıştım: window.URL.createObjectURL (dosya) ... ve img.src'ye yüklüyor Aynı hatada bulunan sonuçlar, "Blob-src" ile görüntüyü dikey olarak ölçeklendirildi Tuval Üzerine –

cevap

29

Bu iOS Safari kaynak sınırlaması bulunur kısıtlama ilgili olabilir. Aşağıdaki bağlantıya göre, 2M pikselin üzerindeki JPEG dosyaları alt örneklenecek.

https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW15

bunu doğru alt örnekleme ile başa çıkamaz Safari'de o tuval şüphe ediyorum.

Görüntünün alt örneklenip örneklenmediğini ve orijinal boyuta mı uzatacağını belirleyen bazı geçici çözümler yarattım.

https://github.com/stomita/ios-imagefile-megapixel

+0

Yukarıdaki kütüphaneyi kullanırken, örneğiniz şu şekilde olur: http://jsbin.com/aqirel/13 iPhone5'imle (iOS 6.0) Tamam. – stomita

+1

Sadece yazdığım başka bir dosya yükleme widget'ının çevrimiçi bir demosunu oluşturdum. IOS oluşturma sorununu algılayabilir. Görüntünün doğru şekilde oluşturulmamış olması durumunda, görüntü bir düzeltme uygulandığında yeniden oluşturulur. Y ölçeğini ikiye katlamak da bunu düzeltiyor gibi görünüyor, ayrıntılar için kaynaklara bakın ... http://sandbox.juurlink.org/html5imageuploader/ –

+0

@stomita Kitaplığınızı kullandım ve dikey yükseklik sorununu çözerken Çok zayıf/düşük çözünürlükte gösteriliyor. Çözümü korumak için nasıl lüks yapabilirim biliyor musun? –

0
var cnv = document.createElement("canvas"); 
     ctx = cnv.getContext("2d"); 

     image = new Image(); 

     image.src = src; 

     image.onload = function() { 

      var size = scaleSizeRatio(image.width,image.height); 
      cnv.width = size[0]; 
      cnv.height = size[1]; 
      ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width , image.height); 

      var div = container; 
      div.appendChild(cnv);  

     } 

ctx.drawImage (resim, 0, 0, image.width, image.height, 0, 0, image.width, image.height); Bu işlev, iPod'daki sıkma sorununu 3Mb'den fazla çözecektir. İlk resim 3Mb sonra görüntü için ölçekli genişliğini ve yüksekliğini hesaplamak ve tuvaline bu genişlik ve yüksekliğini ayarlamak fazlaysa ne olur. Sonra drawImage işlevini çağırın. Nihai görüntüyü beklediğiniz gibi verecektir ...

İlgili konular