应用程序模块之间的图像处理
Image handling between modules of the application
我正在开发一个 Android 应用程序,用户可以在其中拍照,然后对这张照片进行编辑等操作。我的问题是,处理图像并在应用程序的不同模块之间传输图像的最佳做法是什么(例如,我有一个 class 来拍摄照片,我希望这张照片被另一个 class)?我想出的最简单的选择是保存到照片然后阅读(我不喜欢这样,因为最后我还需要删除它们,我认为这不是一个好习惯),或者有一个对象可以包含图像的位图,然后发送该对象(我认为这样做的缺点是该对象将非常重)。
如果您能提出更好的解决方案,我将不胜感激。
您可以创建一个单例实例,一些 class 像 BitmapHoler 并将您的位图保存在其中。在你的其他模块中检索之后,不要忘记清除内存(将 null 设置为实例)。
根据@karandeepsingh 的建议,您可以尝试创建一个如下所示的 BitmapHolder:
//Singleton
public class BitmapHolder {
private static BitmapHolder instance = null;
private List<Bitmap> photos;
public List<Bitmap> getPhotos()
{
return photos;
}
public void setPhoto(Bitmap photo)
{
this.photos.add(photo);
}
private BitmapHolder()
{
photos = new ArrayList<>();
}
public static BitmapHolder getInstance()
{
if (instance == null)
instance = new BitmapHolder();
return instance;
}
}
然后您可以在第一个 class 添加照片,例如:
BitmapHolder bmpHolder = BitmapHolder.getInstance();
bmpHolder.addPhoto((Bitmap) yourimage);
并在另一个 class 中获取照片,例如:
BitmapHolder bmpHolder = BitmapHolder.getInstance();
List<Bitmap> photos = bmpHolder.getPhotos();
我正在开发一个 Android 应用程序,用户可以在其中拍照,然后对这张照片进行编辑等操作。我的问题是,处理图像并在应用程序的不同模块之间传输图像的最佳做法是什么(例如,我有一个 class 来拍摄照片,我希望这张照片被另一个 class)?我想出的最简单的选择是保存到照片然后阅读(我不喜欢这样,因为最后我还需要删除它们,我认为这不是一个好习惯),或者有一个对象可以包含图像的位图,然后发送该对象(我认为这样做的缺点是该对象将非常重)。
如果您能提出更好的解决方案,我将不胜感激。
您可以创建一个单例实例,一些 class 像 BitmapHoler 并将您的位图保存在其中。在你的其他模块中检索之后,不要忘记清除内存(将 null 设置为实例)。
根据@karandeepsingh 的建议,您可以尝试创建一个如下所示的 BitmapHolder:
//Singleton
public class BitmapHolder {
private static BitmapHolder instance = null;
private List<Bitmap> photos;
public List<Bitmap> getPhotos()
{
return photos;
}
public void setPhoto(Bitmap photo)
{
this.photos.add(photo);
}
private BitmapHolder()
{
photos = new ArrayList<>();
}
public static BitmapHolder getInstance()
{
if (instance == null)
instance = new BitmapHolder();
return instance;
}
}
然后您可以在第一个 class 添加照片,例如:
BitmapHolder bmpHolder = BitmapHolder.getInstance();
bmpHolder.addPhoto((Bitmap) yourimage);
并在另一个 class 中获取照片,例如:
BitmapHolder bmpHolder = BitmapHolder.getInstance();
List<Bitmap> photos = bmpHolder.getPhotos();