File

src/app/shared/widgets/upload/preview/image-preview.directive.ts

Metadata

selector img[preview]

Index

Widget inputs
Widget outputs
Methods
Inputs

Constructor

constructor(el: ElementRef, renderer: Renderer2)
Parameters :
Name Type Optional
el ElementRef no
renderer Renderer2 no

Inputs

image

Type: any

Methods

Public ngOnChanges
ngOnChanges(changes: SimpleChanges)
Parameters :
Name Type Optional
changes SimpleChanges no
Returns : any
import {
  Directive,
  ElementRef,
  Input,
  SimpleChanges,
  Renderer2,
} from "@angular/core";

@Directive({
  selector: "img[preview]",
})
export class ImagePreviewDirective {
  @Input() public image: any;

  constructor(private el: ElementRef, private renderer: Renderer2) {}

  public ngOnChanges(changes: SimpleChanges) {
    let reader = new FileReader();
    let el = this.el;

    reader.onloadend = (readerEvent) => {
      let image = new Image();
      image.onload = (imageEvent) => {
        // Resize the image
        let canvas = document.createElement("canvas");
        let maxSize = 400;
        let width = image.width;
        let height = image.height;
        if (width > height) {
          if (width > maxSize) {
            height *= maxSize / width;
            width = maxSize;
          }
        } else {
          if (height > maxSize) {
            width *= maxSize / height;
            height = maxSize;
          }
        }
        canvas.width = width;
        canvas.height = height;
        canvas.getContext("2d").drawImage(image, 0, 0, width, height);
        el.nativeElement.src = canvas.toDataURL("image/jpeg");
      };
      let strImageSrc =
        reader.result instanceof ArrayBuffer
          ? String.fromCharCode.apply(null, new Uint16Array(reader.result))
          : reader.result;
      image.src = strImageSrc;
    };

    if (this.image) {
      return reader.readAsDataURL(this.image);
    }
  }
}

results matching ""

    No results matching ""