2016-06-10 15 views
0

Gibt es eine einfache Möglichkeit, ein Bild auf eine maximale Größe zu skalieren?Bild skalieren mit Appcelerator Titanium

Suchen Sie nach einem einfachen Weg, Dateigrößen klein zu halten und Bilder zu skalieren, die beispielsweise von der App auf die maximale Breite von 640 hochgeladen werden.

Ich habe mehrere Lösungen googled, von Modul Ti.ImageFactory, um es einfach in ein ImageView mit einer Größe zu setzen, und das Blob wieder zurück (was sollte es skaliert werden?). Das Ti.ImageFactory-Modul scheint jedoch sehr alt zu sein, wurde vor einigen Jahren aktualisiert, wenn man sich GIT anschaut. Auch scheint die Zip-Dateien zum Download auf Git fehlen ...

Ex.

Titanium.Media.openPhotoGallery({ 
      success:function(event) 
      { 
       Ti.API.info('Our type was: '+event.mediaType); 

       if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO) 
       { 

        // HERE event.media needs to be scaled to a max 
        // size... for example 2 MB data, or max 960 px 
        // width/height or something similar 

        uploadPhoto(event.media); 

       } 
      }, 
      cancel:function() 
      { 
       Ti.API.info("Photo gallery cancel..."); 
      }, 
      error:function(err) 
      { 
       //Ti.API.error(err); 
       Ti.API.info("Err: "+err); 
       alert(L("AN_ERROR_OCCURRED")); 
      }, 
      mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO] 
     }); 
+0

Sie müssen mehr Informationen als das zur Verfügung stellen. Was hast du schon probiert? Wo steckst du fest? Was ist dein Code? –

+0

Ich habe einfach ein Bild Blob, die ich auf eine maximale Größe ändern möchte. Ich habe noch keinen Code dafür, ich frage nach dem besten Weg, dies zu tun. Verwenden Sie ein Modul? Ti.ImageFactory (bei GitHub, die einige Leute vorschlagen, scheint waaaay alt). Setzen Sie es in eine Bildansicht mit einer Größe und holen Sie das Bild wieder zurück? – Emil

+1

Auf Stackoverflow müssen Sie angeben, was Sie ausprobiert haben und welchen Code Sie haben. Normalerweise können diese Art von Fragen einfach gegoogelt oder an die [Community] gestellt werden (http://tislack.org) –

Antwort

0

Was Sie suchen, ist die Funktion imageAsCropped oder imageAsResized.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+0

Wo sind diese Funktionen? – Emil

+0

@Emil hast du dir die Dokumentation angeschaut? Suchen Sie einfach nach diesen Begriffen –

+0

Ja, diese jetzt auf dem Blob-Objekt gefunden. Nun bleibt die Frage, welcher Weg am besten ist, mit dem Modul ti.imagefactory oder den in Titan vorhandenen Blob-Methoden? – Emil

0

Sie können die Eigenschaft size verwenden.

Größe: Dimensionreadonly

Die Größe der Ansicht in Systemeinheiten.

Obwohl die Eigenschaft ein Dimensionsverzeichnis zurückgibt, sind nur die Höheneigenschaften gültig. Die Positionseigenschaften - x und y - sind immer 0.

Um die Position und Größe der Ansicht zu ermitteln, verwenden Sie stattdessen die rect-Eigenschaft .

Die korrekten Werte sind nur verfügbar, wenn das Layout abgeschlossen ist. Um zu festzustellen, wenn das Layout abgeschlossen ist, fügen Sie einen Listener für das Ereignis Nachbearbeitung hinzu.

Documentation Link

+0

Denke nicht, dass das funktioniert. Das fragliche Bild wird nie irgendwo angezeigt, einfach aus der Kamera oder der Fotogalerie auf dem Gerät abgerufen und muss skaliert werden, bevor es hochgeladen wird. (Bearbeitete meine ursprüngliche Frage mit mehr Info). – Emil

Verwandte Themen