You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-13 00:10:37 +02:00
Desktop: Added more methods to the imaging plugin API
This commit is contained in:
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -22,39 +22,19 @@ joplin.plugins.register({
|
|||||||
const result = await joplin.data.get(['notes', noteId, 'resources']);
|
const result = await joplin.data.get(['notes', noteId, 'resources']);
|
||||||
if (result.items.length <= 0) return;
|
if (result.items.length <= 0) return;
|
||||||
const resource = result.items[0];
|
const resource = result.items[0];
|
||||||
const file = await joplin.data.get(['resources', resource.id, 'file']);
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// Create an image object and resize it
|
// Create an image object and resize it
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
const imageHandle = await joplin.imaging.createFromBuffer(file.body);
|
const imageHandle = await joplin.imaging.createFromResource(resource.id);
|
||||||
const resizedImageHandle = await joplin.imaging.resize(imageHandle, { width: 100 });
|
const resizedImageHandle = await joplin.imaging.resize(imageHandle, { width: 100 });
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// Save the image to file
|
// Convert the image to a resource and add it to the note
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
|
||||||
const tempFilePath = (await joplin.plugins.dataDir()) + '/' + Date.now();
|
const newResource = await joplin.imaging.toJpgResource(resizedImageHandle, { title: "Thumbnail" });
|
||||||
const base64 = await joplin.imaging.toBase64(resizedImageHandle);
|
|
||||||
const fs = await joplin.require('fs-extra');
|
|
||||||
await fs.writeFile(tempFilePath, base64, { encoding: 'base64' });
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
// Create a resource for the thumbnail and add it to the note
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
|
|
||||||
const newResource = await joplin.data.post(
|
|
||||||
["resources"],
|
|
||||||
null,
|
|
||||||
{ title: "Thumbnail" },
|
|
||||||
[
|
|
||||||
{
|
|
||||||
path: tempFilePath,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
await joplin.commands.execute('insertText', '\n');
|
await joplin.commands.execute('insertText', '\n');
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import { Rectangle } from "./types";
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -31,10 +32,47 @@ export default class JoplinImaging {
|
|||||||
private createImageHandle;
|
private createImageHandle;
|
||||||
private imageByHandle;
|
private imageByHandle;
|
||||||
private cacheImage;
|
private cacheImage;
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
createFromBuffer(buffer: any, options?: CreateFromBufferOptions): Promise<Handle>;
|
||||||
|
createFromPath(filePath: string): Promise<Handle>;
|
||||||
|
createFromResource(resourceId: string): Promise<Handle>;
|
||||||
|
getSize(handle: Handle): Promise<any>;
|
||||||
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
resize(handle: Handle, options?: ResizeOptions): Promise<string>;
|
||||||
|
crop(handle: Handle, rectange: Rectangle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toDataUrl(handle: Handle): Promise<string>;
|
toDataUrl(handle: Handle): Promise<string>;
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
toBase64(handle: Handle): Promise<string>;
|
toBase64(handle: Handle): Promise<string>;
|
||||||
|
toPngFile(handle: Handle, filePath: string): Promise<void>;
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
toJpgFile(handle: Handle, filePath: string, quality?: number): Promise<void>;
|
||||||
|
private tempFilePath;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
toJpgResource(handle: Handle, resourceProps: any, quality?: number): Promise<import("../../database/types").ResourceEntity>;
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
toPngResource(handle: Handle, resourceProps: any): Promise<import("../../database/types").ResourceEntity>;
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
/* eslint-disable multiline-comment-style */
|
/* eslint-disable multiline-comment-style */
|
||||||
|
|
||||||
|
import Resource from '../../../models/Resource';
|
||||||
|
import Setting from '../../../models/Setting';
|
||||||
|
import shim from '../../../shim';
|
||||||
|
import { Rectangle } from './types';
|
||||||
|
|
||||||
export interface Implementation {
|
export interface Implementation {
|
||||||
nativeImage: any;
|
nativeImage: any;
|
||||||
}
|
}
|
||||||
@ -63,21 +68,61 @@ export default class JoplinImaging {
|
|||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an image from a buffer - however only use this for very small
|
||||||
|
* images. It requires transferring the full image data from the plugin to
|
||||||
|
* the app, which is extremely slow and will freeze the app. Instead, use
|
||||||
|
* `createFromPath` or `createFromResource`, which will manipulate the image
|
||||||
|
* data directly from the main process.
|
||||||
|
*/
|
||||||
public async createFromBuffer(buffer: any, options: CreateFromBufferOptions = null): Promise<Handle> {
|
public async createFromBuffer(buffer: any, options: CreateFromBufferOptions = null): Promise<Handle> {
|
||||||
return this.cacheImage(this.implementation_.nativeImage.createFromBuffer(buffer, options));
|
return this.cacheImage(this.implementation_.nativeImage.createFromBuffer(buffer, options));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async createFromPath(filePath: string): Promise<Handle> {
|
||||||
|
return this.cacheImage(this.implementation_.nativeImage.createFromPath(filePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createFromResource(resourceId: string): Promise<Handle> {
|
||||||
|
const resource = await Resource.load(resourceId);
|
||||||
|
if (!resource) throw new Error(`No such resource: ${resourceId}`);
|
||||||
|
const resourcePath = await Resource.fullPath(resource);
|
||||||
|
if (!(await shim.fsDriver().exists(resourcePath))) throw new Error(`Could not load resource path: ${resourcePath}`);
|
||||||
|
return this.createFromPath(resourcePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getSize(handle: Handle) {
|
||||||
|
const image = this.imageByHandle(handle);
|
||||||
|
return image.data.getSize();
|
||||||
|
}
|
||||||
|
|
||||||
public async resize(handle: Handle, options: ResizeOptions = null) {
|
public async resize(handle: Handle, options: ResizeOptions = null) {
|
||||||
const image = this.imageByHandle(handle);
|
const image = this.imageByHandle(handle);
|
||||||
const resizedImage = image.data.resize(options);
|
const resizedImage = image.data.resize(options);
|
||||||
return this.cacheImage(resizedImage);
|
return this.cacheImage(resizedImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async crop(handle: Handle, rectange: Rectangle) {
|
||||||
|
const image = this.imageByHandle(handle);
|
||||||
|
const croppedImage = image.data.crop(rectange);
|
||||||
|
return this.cacheImage(croppedImage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
public async toDataUrl(handle: Handle): Promise<string> {
|
public async toDataUrl(handle: Handle): Promise<string> {
|
||||||
const image = this.imageByHandle(handle);
|
const image = this.imageByHandle(handle);
|
||||||
return image.data.toDataURL();
|
return image.data.toDataURL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Warnings: requires transferring the complete image from the app to the
|
||||||
|
* plugin which may freeze the app. Consider using one of the `toXxxFile()`
|
||||||
|
* or `toXxxResource()` methods instead.
|
||||||
|
*/
|
||||||
public async toBase64(handle: Handle) {
|
public async toBase64(handle: Handle) {
|
||||||
const dataUrl = await this.toDataUrl(handle);
|
const dataUrl = await this.toDataUrl(handle);
|
||||||
const s = dataUrl.split('base64,');
|
const s = dataUrl.split('base64,');
|
||||||
@ -85,6 +130,49 @@ export default class JoplinImaging {
|
|||||||
return s[1];
|
return s[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async toPngFile(handle: Handle, filePath: string) {
|
||||||
|
const image = this.imageByHandle(handle);
|
||||||
|
const data = image.data.toPNG();
|
||||||
|
await shim.fsDriver().writeFile(filePath, data, 'buffer');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quality is between 0 and 100
|
||||||
|
*/
|
||||||
|
public async toJpgFile(handle: Handle, filePath: string, quality = 80) {
|
||||||
|
const image = this.imageByHandle(handle);
|
||||||
|
const data = image.data.toJPEG(quality);
|
||||||
|
await shim.fsDriver().writeFile(filePath, data, 'buffer');
|
||||||
|
}
|
||||||
|
|
||||||
|
private tempFilePath(ext: string) {
|
||||||
|
return `${Setting.value('tempDir')}/${Date.now()}_${Math.random()}.${ext}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a JPEG.
|
||||||
|
*/
|
||||||
|
public async toJpgResource(handle: Handle, resourceProps: any, quality = 80) {
|
||||||
|
const tempFilePath = this.tempFilePath('jpg');
|
||||||
|
await this.toJpgFile(handle, tempFilePath, quality);
|
||||||
|
const newResource = await shim.createResourceFromPath(tempFilePath, resourceProps, { resizeLargeImages: 'never' });
|
||||||
|
await shim.fsDriver().remove(tempFilePath);
|
||||||
|
return newResource;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Joplin resource from the image data. The image will be
|
||||||
|
* first converted to a PNG.
|
||||||
|
*/
|
||||||
|
public async toPngResource(handle: Handle, resourceProps: any) {
|
||||||
|
const tempFilePath = this.tempFilePath('png');
|
||||||
|
await this.toPngFile(handle, tempFilePath);
|
||||||
|
const newResource = await shim.createResourceFromPath(tempFilePath, resourceProps, { resizeLargeImages: 'never' });
|
||||||
|
await shim.fsDriver().remove(tempFilePath);
|
||||||
|
return newResource;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Image data is not automatically deleted by Joplin so make sure you call
|
* Image data is not automatically deleted by Joplin so make sure you call
|
||||||
* this method on the handle once you are done.
|
* this method on the handle once you are done.
|
||||||
|
@ -359,6 +359,13 @@ export interface DialogResult {
|
|||||||
formData?: any;
|
formData?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Rectangle {
|
||||||
|
x?: number;
|
||||||
|
y?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
}
|
||||||
|
|
||||||
// =================================================================
|
// =================================================================
|
||||||
// Settings types
|
// Settings types
|
||||||
// =================================================================
|
// =================================================================
|
||||||
|
Reference in New Issue
Block a user