Oracle
 sql >> база данни >  >> RDS >> Oracle

конвертиране на изображение в паметта в петно

java.awt.Image е доста просто. Той не предоставя средства, чрез които изображението може да бъде записано/запазено, нито предоставя средства за получаване на достъп до базовите пикселни данни на изображението.

Първата стъпка е конвертирането на java.awt.Image към нещо, което ImageIO може да поддържа. Това ще ви позволи да запишете данните за изображението...

ImageIO изисква RenderedImage като основен източник на изображение. BufferedImage е единственото изпълнение на този интерфейс в библиотеките по подразбиране...

За съжаление, няма просто метод за преобразуване от едно в друго. За щастие, не е твърде трудно.

Image img = ...;

BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
g2d.drawImage(img, 0, 0, null);
g2d.dispose();

По принцип това просто рисува оригиналния java.awt.Image върху BufferedImage

След това трябва да запазим изображението по някакъв начин, така че да може да създаде InputStream ...

Това е малко по-малко от оптималното, но върши работата.

ByteArrayOutputStream baos = null;
try {
    baos = new ByteArrayOutputStream();
    ImageIO.write(bi, "png", baos);
} finally {
    try {
        baos.close();
    } catch (Exception e) {
    }
}
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

По принцип записваме изображението в ByteArrayOutputStream и използвайте резултата за генериране на ByteArrayInputStream

Сега. Ако паметта е проблем или изображението е доста голямо, можете първо да запишете изображението във File и след това просто прочетете File обратно чрез някакъв вид InputStream вместо това...

Накрая задаваме InputStream към необходимата колона...

PreparedStatement stmt = null;
//...    
stmt.setBlob(parameterIndex, bais);

А Blob е твой чичо...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Различни CSV стойности, използващи REGEXP_REPLACE в Oracle

  2. Oracle/SQL - Намиране на записи с една стойност, с изключение на нули

  3. PHP, IIS, Oracle (OCI) не работят

  4. Хибернация> CLOB> Oracle :(

  5. Как да получите име на схема на база данни, когато използвате oracle jdbc връзка?