
Research
Namastex.ai npm Packages Hit with TeamPCP-Style CanisterWorm Malware
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.
@oguzhnatly/react-native-image-manipulator
Advanced tools
ImageManipulator for react native without Expo and Unimodules. Based on Expo ImageManipulator
Crop, rotate, flip, and resize images in React Native without Expo or Unimodules. Fully typed. Built on the same API as expo-image-manipulator so it feels familiar, but works in any bare React Native project.
Most image manipulation libraries for React Native either require Expo or pull in a heavy dependency tree through Unimodules. This package is a standalone drop-in that gives you the same clean, chainable API without any of that overhead. Crop, rotate, flip, resize, compress and export to JPEG or PNG in a single call.
npm install @oguzhnatly/react-native-image-manipulator
yarn add @oguzhnatly/react-native-image-manipulator
Install native pods after adding the package:
cd ios && pod install
react-native link @oguzhnatly/react-native-image-manipulator
No additional setup required for Android on React Native 0.60+. The package links automatically via autolinking.
Libraries and select Add Files to [your project]node_modules/@oguzhnatly/react-native-image-manipulator and add RNImageManipulator.xcodeprojBuild Phases → Link Binary With Libraries and add libRNImageManipulator.aAdd the following to android/settings.gradle:
include ':react-native-image-manipulator'
project(':react-native-image-manipulator').projectDir = new File(rootProject.projectDir, '../node_modules/@oguzhnatly/react-native-image-manipulator/android')
Add the following to the dependencies block in android/app/build.gradle:
implementation project(':react-native-image-manipulator')
Open android/app/src/main/java/[...]/MainActivity.java and add:
import com.oguzhnatly.rnimagemanipulator.RNImageManipulatorPackage;
Then register the package inside getPackages():
new RNImageManipulatorPackage()
import RNImageManipulator from '@oguzhnatly/react-native-image-manipulator';
const result = await RNImageManipulator.manipulate(
imageUri,
[{ rotate: 90 }, { flip: { vertical: true } }],
{ format: 'png' }
);
console.log(result.uri); // URI of the output image
console.log(result.width); // Output image width
console.log(result.height); // Output image height
Provide only one dimension and the other is calculated automatically:
const result = await RNImageManipulator.manipulate(
imageUri,
[{ resize: { width: 800 } }],
{ format: 'jpeg', compress: 0.9 }
);
const result = await RNImageManipulator.manipulate(
imageUri,
[{ crop: { originX: 50, originY: 50, width: 400, height: 400 } }],
{ format: 'jpeg', compress: 1 }
);
Actions are applied in the order they are provided:
const result = await RNImageManipulator.manipulate(
imageUri,
[
{ rotate: 90 },
{ flip: { horizontal: true } },
{ resize: { width: 600 } },
{ crop: { originX: 0, originY: 0, width: 600, height: 400 } },
],
{ format: 'jpeg', compress: 0.85, base64: true }
);
// result.base64 is available when base64: true
const dataUri = `data:image/jpeg;base64,${result.base64}`;
RNImageManipulator.manipulate(uri, actions, saveOptions)Applies a sequence of transformations to the image at uri and writes the result to a new file. The source file is never modified.
| Parameter | Type | Required | Description |
|---|---|---|---|
uri | string | Yes | URI of the source image. Must be within app scope |
actions | Action[] | Yes | Ordered array of transformations to apply |
saveOptions | SaveOptions | Yes | Output format, compression level, and base64 flag |
resize
{ resize: { width?: number; height?: number } }
Resizes the image. If only one dimension is provided, the other is computed automatically to preserve the original aspect ratio.
rotate
{ rotate: number }
Rotates the image by the given number of degrees. Positive values rotate clockwise, negative values rotate counter-clockwise.
flip
{ flip: { vertical?: boolean; horizontal?: boolean } }
Flips the image along the specified axis or axes. Both can be set to true at the same time.
crop
{ crop: { originX: number; originY: number; width: number; height: number } }
Crops the image to a rectangle. originX and originY define the top-left corner of the crop area in pixels relative to the current image size.
| Option | Type | Default | Description |
|---|---|---|---|
format | 'jpeg' | 'png' | 'jpeg' | Output format. PNG is lossless. JPEG produces smaller files with compression artifacts |
compress | number (0 to 1) | 1 | Compression amount. 1 means no compression. 0 is maximum compression. Only applies to JPEG |
base64 | boolean | false | When true, the result includes a base64 string of the output image |
{
uri: string; // URI to the output image file
width: number; // Width of the output image in pixels
height: number; // Height of the output image in pixels
base64?: string; // Base64 encoded image data, present only when saveOptions.base64 is true
}
Prepend data:image/jpeg;base64, or data:image/png;base64, to the base64 value to construct a data URI usable directly in an <Image> source.
manipulate always produces a new file. Passing the same URI as input and overwriting is not supported due to how React Native caches images.See CHANGELOG.md for release history.
MIT © Oguzhan Atalay
FAQs
ImageManipulator for react native without Expo and Unimodules. Based on Expo ImageManipulator
The npm package @oguzhnatly/react-native-image-manipulator receives a total of 176 weekly downloads. As such, @oguzhnatly/react-native-image-manipulator popularity was classified as not popular.
We found that @oguzhnatly/react-native-image-manipulator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.