WebP-Bildformat auf iOS
Ich bin derzeit auf der Erforschung der Möglichkeit der Verwendung von Googles WebP-Bildformat in unserer iOS-software.
Ich fand es nicht schwer zu entschlüsseln WebP in RGBA8888 als erforderlich mit den Googles C-Bibliothek.
Möchte ich jedoch, dass eine Implementierung anlegen vergleichbar UIImage sowohl in Bezug auf API und performance.
Q1. Ist es möglich in iOS zu entwickeln, einen Bild-decoder, so dass native imageWithData und andere APIs, Lesen Sie das neue format?
Q2. Wenn Nein, was API bedeutet UIImageView (und anderen framework bereitgestellten Steuerelemente) verwenden, um zu zeichnen das UIImage? Ist es öffentlich (z.B. drawInRect/drawAtPoint) oder interne? Kann ich die Erben von UIImage, überschreiben Sie ein paar Methoden (wie +imageWithContentsOfFile, +imageWithData, +imageNamed, - drawInRect, -drawAtPoint), und habe meine WPImage Objekte Verhalten sich gut mit SDK-APIs zur Verfügung gestellt?
Q3. Wenn jede Instanz von meinem hypothetischen WPImage Klasse abonnieren für UIApplicationDidReceiveMemoryWarningnotification (Spülen, um RGBA-image-buffer verlassen den viel kleineren original-WebP-Daten im RAM), wird es nicht Schaden, das viel Leistung? Die software, die wir entwickeln, können leicht Hunderte von verschiedenen images in RAM.
Vielen Dank im Voraus!
InformationsquelleAutor Soonts | 2011-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich auch voll und ganz (decode/encode)
UIImage
wrapper fürWebP
.https://github.com/shmidt/WebP-UIImage
Ich habe nicht versucht es auf dem Gerät, aber Sie können versuchen, die version mit den aktualisierten framework: github.com/seanooi/iOS-WebP
Ich aktualisierte den Rahmen. Das Probleme stellt sich heraus, dass meine Geduld: es ist einfach viel zu langsam und prozessorintensiv ist zu Kodieren, große Bilder. Wenn ich das Bild verkleinern, um so etwas wie 1200 x 1200, ich kann die Daten nach etwa 10 Sekunden. Die Größe der Datei ist kleiner als ein JPEG, aber die Bearbeitungszeit ist einfach zu lange für diese nützlich zu sein, die in meiner app. Dank
Vielen Dank für das teilen!
Es dauert 18 Sekunden zum codieren eines 4K-Bild auf 6S. Die meiste Zeit wird damit verbracht, in google WebPEncodeRGBA
InformationsquelleAutor Shmidt
Es ist ein Beispiel . https://github.com/carsonmcdonald/WebP-iOS-example
nur etwas gefunden, das scheint im Zusammenhang - github.com/seanooi/iOS-WebP
InformationsquelleAutor Nathan Bao
Einem anderen Beispiel, das ich geschrieben habe, verwendet die Arbeit, die Carson McDonald begann, aber in einer wiederverwendbaren Weise. Im Grunde fügen Sie den WebP.framework zu Ihrem Projekt (enthalten in meinem Beispiel, oder erstellen-in der Lage, mithilfe der Anweisungen Carson hat auf seiner website) und dann können Sie etwas wie das hier tun:
Wenn Sie möchten, werfen Sie einen Blick auf mein Beispiel, gehen Sie hier: https://github.com/nyteshade/iOSWebPWithAlphaExample
InformationsquelleAutor nyteshade
Zuerst decodieren des WebP Pixel in einen Puffer. Sie müssen dann rufen Sie CGDataProviderCreateWithData() zum erstellen von einem "data provider" für CoreGraphics und rufen Sie dann CGImageCreate() auf und übergeben Sie den provider und den erforderlichen Argumenten. Schließlich invoke UIImage imageWithCGImage:imageRef, um ein UIImage Instanz.
InformationsquelleAutor MoDJ