NSImageView Zoom - paar Probleme

  • NSImageView Zoom - paar Probleme

    Hallo,

    Ich lese hier schon eine ganze Weile mit und es ist auch recht interessant und nun habe ich nen Problem wo ich fragen muss :) So zur Story:

    Ich bin zur Zeit dabei mir ein Alternatives Frontend zu Sane zu basteln. (Die Twain UI is ja schrecklich...). Das scannen geht auch schon gut nun bin ich beim Anzeigen des ganzen schnipsels. Also das gescannte bild ist schon etwas größer mit 300dpi Auflösung.

    Nun lass ich dieses Bild in einem NSImageView anzeigen.(Dies liegt wiederum in einem NSScrollView - aber das sollte ja uninteresant sein jetzt)

    Von diesem NSImageView habe ich eine Subclass erstellt und dort eine property "zoom" angelegt.

    Der Setter sieht so aus:

    Quellcode

    1. - (void) setZoom:(float)_zoom
    2. {
    3. NSSize imageSize = [[self image] size];
    4. NSAffineTransform *at = [NSAffineTransform transform];
    5. [at scaleBy:_zoom];
    6. zoom = _zoom;
    7. [[self animator] setFrameSize:[at transformSize:imageSize]];
    8. [self setNeedsDisplay:YES];
    9. }
    Alles anzeigen


    Dies funktioniert soweit auch. Nur wenn das Bild etwas größer(zoom faktor ca. 0.60) wird gibt CoreAnimation einen Fehleraus und das Bild ist weis bis ichs wieder verkleinere(zoom faktor ca. 0.57).

    Output:

    Quellcode

    1. 2008-04-15 15:16:07.750 Saney[1101:10b] Zoom 0.60
    2. CoreAnimation: 1477 by 2057 image is too large for GPU, ignoring
    3. CoreAnimation: rendering error 500
    4. CoreAnimation: rendering error 500
    5. CoreAnimation: rendering error 500
    6. ....
    7. 2008-04-15 15:16:12.982 Saney[1101:10b] Zoom 0.57
    8. CoreAnimation: rendering error 502
    9. - Ab hier wird das Bild wieder angezeigt -


    So das wäre ein Problem.

    Das Bild ist nur 2500x3500 Pixel groß.

    Wisst ihr wie man dieses Problem beheben kann? Bei Vorschau habe ich mal mit einem größeren Bild (1200dpi XD) gesehen das es wohl nur den Teil des Bildes richtig zeigt welcher im Fenster ist, sobald man dann scrollt läd es die daten erst nach.
    Oder sollte mein bei solchen Sachen das irgendwie ganz anders lösen?

    Grüße von kleinweby, (was noch weitere Probleme hat, aber eins nach dem anderen ;P)
  • RE: NSImageView Zoom - paar Probleme

    Ich habe es zwar noch nicht probiert, aber auch NSIMageView dürfte Bounds und Frame haben. Damit ließe sich durch das System zoomen.

    Davon abgesehen kannst du natürlich nur den sichtbaren Teil zoomen. Wird ein Speicherproblem sein.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: NSImageView Zoom - paar Probleme

    Wenn ich mich richtig erinnere, hatte ich mal ähnliche Probleme mit NSImageView. Da der zusätzliche Overhead von NSImage / NSImageView in dem Fall eh nicht sonderlich sinnvoll war, habe ich darauf ganz verzichtet und mir einen Custom View gebastelt, der einfach direkt eine NSBitmapImageRep (mit entsprechender Transformation) malt. War erstaunlich schnell gemacht und lief fix und problemlos. Keine Ahnung, ob das hier auch funktioniert. Wenn die Bilder erheblich größer werden, würde ich auch über Tiling nachdenken.
    Multigrad - 360°-Produktfotografie für den Mac
  • RE: NSImageView Zoom - paar Probleme

    Original von longW
    Es gibt einen Hinweis auf die zulässigen Maße eines Bildes in Abhängkeit einer OpenGl-Textur, worauf CA nun einmal aufbaut: Cocoa Archiv


    Wobei dort ein falscher Wert steht, eine Textur kann maximal 2048x 2048 sein, nicht 2046x2046, weiterhin sollte die Textur "powert of two" sein, ausser dein System (und dass von den Benutzern) unterstützt ARB_texture_rectangles.

    Ach ich habs grad gelesen

    Das Bild ist nur 2500x3500 Pixel groß.

    Das wirst Du mit Boardmitteln nicht in CA unterbringen (eben wegen der oben genannten Beschränkungen).
    Das Nachladen, was Du meintest kommt wohl daher das hier auch ein Tiling-System dahintersteckt (mattik)
  • RE: NSImageView Zoom - paar Probleme

    Innerhalb von OpenGl hast Du sicher Recht, aber der Beitrag von John Harper, der im Übrigen auf dem großen Mutterschiff arbeitet, bezieht sich allgemein auf CoreAnimation und besonders auf die sichere Größe unabhängig von der verwendeten Hardware.

    Wenn man dann mehr wissen möchte, muss man direkt in OpenGl fragen, aber dass schreibt er ja auch.
    I would be embarrassed if they did not spy on me.
  • RE: NSImageView Zoom - paar Probleme

    Original von longW
    Innerhalb von OpenGl hast Du sicher Recht, aber der Beitrag von John Harper, der im Übrigen auf dem großen Mutterschiff arbeitet, bezieht sich allgemein auf CoreAnimation und besonders auf die sichere Größe unabhängig von der verwendeten Hardware.
    .


    Ach, das war glaub ich wegen der alten Nvidia FX-Karte