Unplanned
Last Updated: 07 Jan 2025 16:29 by Nico
Created by: Nico
Comments: 0
Category: ImageEditor
Type: Feature Request
1

Hi Team,

There are several scenarios where a developer might want to intercept the image loading process to preform pre-processing before the ImageEditor initial loads up the data onto the canvas.

This feature is to ask that you either expose the processing as service, or an event handler/overridable method, where we can do this preprocessing.

Example

Just as a conceptual example, this Bug Report shows a current issue where the EXIF of the image data has a rotation that is not currently respected by the ImageEditor. As the developer, I could override the ImageEditor's "PrepareBitmap" method and handle the EXIF rotation ahead of time before the ImageEditor moves forward.

public override SkiaBitmap PrepareBitmap(SkiaBitmap originalBitmap)
{
    var rotatedBitmap = AutoOrient(originalBitmap, origin);
    return rotatedBitmap;
}

Thank you,

Nico

Unplanned
Last Updated: 02 Jan 2025 10:14 by Andy

When the source of an ImageEditor control is set to a URL that doesn't exist, the 404 causes an app crash. I'd think it'd display a broken image or somehow handle it rather than bubble up the crash.

for example null template, missing image template, etc.

Unplanned
Last Updated: 26 Mar 2024 14:17 by Martin Ivanov
Created by: Martin Ivanov
Comments: 0
Category: ImageEditor
Type: Feature Request
0
Allow reading and displaying the .tiff image format.
Unplanned
Last Updated: 25 Mar 2024 06:19 by ADMIN
Created by: Greg
Comments: 8
Category: ImageEditor
Type: Feature Request
15

This is a feature request for an annotations layer that provides lines, shapes, text, etc.

These annotations:

  • Should not embedded into the bitmap until the image is saved (or otherwise flattened).
  • Should be importable/exportable as JSON data so that the developer can load/save the annotations separate from the image.

As an example of these features, see Techsmith's SnagIt Editor app.

Unplanned
Last Updated: 15 Jan 2024 08:43 by Jian
Created by: Jian
Comments: 0
Category: ImageEditor
Type: Feature Request
1
Provide a collection with the executed commands. This could be of help for a scenario where you have execute for example 4-5 commands on an image and you load another image in the editor but want to reapply the executed commands on it. 
Unplanned
Last Updated: 17 Oct 2023 16:11 by Legrand
Created by: Legrand
Comments: 0
Category: ImageEditor
Type: Feature Request
1

Hi Team,

I would like to be able to persist the user's scroll position after zooming, could you please expose a couple properties for X/Y or the entire scrollviewer's offset?

Currently, the ZoomLevel property is available, which will let me get the zoom amount (double). However, there's nothing for me to be able to get the current X/Y offset.

For example, here's a mockup:

I would like to be able to load a new image and re-set the same ZoomLevel and X/Y position.

Thank you,

Legrand

Completed
Last Updated: 11 Oct 2023 08:02 by ADMIN
Release 6.3.0
Created by: Ryan
Comments: 0
Category: ImageEditor
Type: Feature Request
0
Provide ImageLoaded event.
Unplanned
Last Updated: 10 Mar 2023 10:24 by ADMIN

Is there a way to retrieve a pixel of the image in the imageEditor when clicking on it

I could implement something working well , but not when the image is zoomed or moved in the editor 

        public static Point Calc_Coordinates(double w_image, double h_image, double w_container, double h_container, double click_x, double click_y) 
        {
            Double zoomW = (w_container / w_image);
            Double zoomH = (h_container / h_image);
            Double zoomActual = Math.Min(zoomW, zoomH);

            Double padX = zoomActual == zoomW ? 0 : (w_container - (zoomActual * w_image)) / 2;
            Double padY = zoomActual == zoomH ? 0 : (h_container - (zoomActual * h_image)) / 2;

            Point res = new Point();

            res.X = (Int32)((click_x - padX) / zoomActual);
            res.Y = (Int32)((click_y - padY) / zoomActual);

            //
            if (res.X < 0 || res.X > w_image) { res.X = -1};
            if (res.Y < 0 || res.Y > h_image) { res.Y = -1};
            return res;
        }